2017-11-09 19 views
0

DTD와 특정 일 전에 모든 요소 개수 : XPath를 사용는 XPath와 DTD

<!ELEMENT PLAY (TITLE, FM, PERSONAE, SCNDESCR, PLAYSUBT, INDUCT?, PROLOGUE?, ACT+, EPILOGUE?)> 
<!ELEMENT FM (P+)> 
<!ELEMENT PERSONAE (TITLE, (PERSONA | PGROUP)+)> 
<!ELEMENT PGROUP (PERSONA+, GRPDESCR)> 
<!ELEMENT INDUCT (TITLE, SUBTITLE*, (SCENE+|(SPEECH|STAGEDIR|SUBHEAD)+))> 
<!ELEMENT ACT (TITLE, SUBTITLE*, PROLOGUE?, SCENE+, EPILOGUE?)> 
<!ELEMENT SCENE (TITLE, SUBTITLE*, (SPEECH | STAGEDIR | SUBHEAD)+)> 
<!ELEMENT PROLOGUE (TITLE, SUBTITLE*, (STAGEDIR | SPEECH)+)> 
<!ELEMENT EPILOGUE (TITLE, SUBTITLE*, (STAGEDIR | SPEECH)+)> 
<!ELEMENT SPEECH (SPEAKER+, (LINE | STAGEDIR | SUBHEAD)+)> 
<!ELEMENT LINE (#PCDATA | STAGEDIR)*> 

을, 나는 그가 말한다 "하기 위해, 또는 수 없다"전에 모든 햄릿의 연설을 계산해야합니다. 햄릿이 SPEAKER 태그 아래에 있고, SPEECH 태그 아래에 음성이 있습니다. LINE 태그 아래에 있습니다.

/PLAY/ACT/SCENE/SPEECH[contains(LINE, 'To be')][contains(SPEAKER, 'HAMLET')] 

답변

0
count(/PLAY/ACT/SCENE/SPEECH[contains(LINE, 'To be')][contains(SPEAKER, 'HAMLET')]/preceding::SPEECH[contains(SPEAKER, 'HAMLET')]) + 1 
:

이 같은 XPath를 사용하여 정확한 연설을 얻으려면