0
我正在嘗試獲取以下工作,但唉,它無法返回預期的結果。雖然與我在限制xpath 1.0之前所問的問題類似。具有名稱空間的XPath過濾器屬性
我正在尋找使用xpath來獲取「副標題」節點內的第一個文本節點。該XML如下:
<topic class="coverPage">
<subtitle id="IDb2907ca1-51fe-472e-bf99-246126937eab">
<xt:delText xt:action="start" xt:author="James Doherty" xt:dateTime="2016-01-27T17:07:00" xt:id="fb72fba6-f502-422e-9e91-1731ed007e98"/>
Ignore
<xt:delText xt:action="end" xt:id="fb72fba6-f502-422e-9e91-1731ed007e98"/>
Sub-title
<xt:insText xt:action="start" xt:author="James Doherty" xt:dateTime="2016-01-27T14:55:00" xt:id="44ac82c2-acfc-4721-b962-20ac2b18d9f3"/>
Insert Additional Text
<xt:insText xt:action="end" xt:id="44ac82c2-acfc-4721-b962-20ac2b18d9f3"/>
Extra Text
</subtitle>
</topic>
替代XML還提供如下:
<topic class="coverPage">
Sub-title
<subtitle id="IDb2907ca1-51fe-472e-bf99-246126937eab">
<xt:delText xt:action="start" xt:author="James Doherty" xt:dateTime="2016-01-27T17:07:00" xt:id="fb72fba6-f502-422e-9e91-1731ed007e98"/>
Ignore
<xt:delText xt:action="end" xt:id="fb72fba6-f502-422e-9e91-1731ed007e98"/>
<xt:insText xt:action="start" xt:author="James Doherty" xt:dateTime="2016-01-27T14:55:00" xt:id="44ac82c2-acfc-4721-b962-20ac2b18d9f3"/>
Insert Additional Text
<xt:insText xt:action="end" xt:id="44ac82c2-acfc-4721-b962-20ac2b18d9f3"/>
Extra Text
</subtitle>
</topic>
我曾嘗試以下,但沒有運氣:
/topic[@class='coverPage']/*[local-name()='subtitle']/text()[1]|/topic[@class='coverPage']/*[local-name()='subtitle']/*[substring(local-name(), string-length(local-name())-string-length('Text')+1)='Text'][@*[local-name()='action']='end'][1]/following-sibling::text()[1]
我相信這個問題是屬性值「action」並且它有一個名稱空間。預期的結果將是「小標題」。關於如何讓這個工作的任何想法?
查詢後半彷彿回到「副標題」按照您的期望:http://www.utilities-online.info/xpath/?save=33963c98-b5b0-44b5-b83c- 3010e5d85f12-xpath#.VqomcOaICUk(我從頭開始使用'.',以便它會從根節點開始) –
謝謝@KeithHall,但是您提供的示例包含一個xml命名空間的定義,我的XML不會沒有。我還向OP添加了另一個XML示例,其中包含一個應該與xpath的「OR」部分配合使用的示例。謝謝... – JJDoc
會這樣的幫助嗎? '// topic [@ class =「coverPage」]/descendant :: subtitle/* [position()= 1]' – Newcomer