[英]XPath query on node-set working like a SQL where in
xml文檔的示例:
<xml>
<list>
<item refid="1" />
<item refid="3" />
</list>
<catalogue>
<model id="1"><details /></model>
<model id="2"><details /></model>
<model id="3"><details /></model>
</catalogue>
</xml>
我想查詢類似// model [@id =(// item / @ refid)]的內容,以獲取在“list”中具有引用id的所有“model”
您的xpath表達式應該已經完全返回您想要的內容。 引自http://www.w3.org/TR/xpath/#booleans ,第5段:
如果要比較的一個對象是節點集而另一個是字符串,那么當且僅當節點集中有節點時才進行比較,以便對字符串值執行比較的結果節點和另一個字符串是真的
我想查詢類似// model [@id =(// item / @ refid)]的內容,以獲取在“list”中具有引用id的所有“model”
這里的主要問題是你缺乏信心而沒有實際運行XPath引擎來評估你提出的表達式。
如果您評估XPath表達式,則建議:
//model[ @id = (//item/@refid) ]
您將看到它精確選擇(兩個) model
元素,其id
屬性由作為list
子item
元素的refid
屬性引用。
@Jörn-Horstmann在他的回答中已經解釋了為什么你得到這些結果。
一個小問題是通常避免使用//
縮寫 。 它會導致整個文檔被掃描並且效率非常低。 在這種情況下,我會使用等效但可能更快來評估XPath表達式:
/*/catalogue/model[@id = /*/list/item/@refid]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.