簡體   English   中英

節點集上的XPath查詢就像SQL一樣工作

[英]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屬性由作為listitem元素的refid屬性引用。

@Jörn-Horstmann在他的回答中已經解釋了為什么你得到這些結果。

一個小問題是通常避免使用//縮寫 它會導致整個文檔被掃描並且效率非常低。 在這種情況下,我會使用等效但可能更快來評估XPath表達式:

/*/catalogue/model[@id = /*/list/item/@refid]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM