考慮下面的XML文檔...的XPath發現沒有其他元素的元素引用它們
<r>
<e id="a" />
<e id="b" />
<e id="c" />
<x ref="#b" />
</r>
...我怎麼能寫一個XPath 1.0表達式,查找所有<e>
元素沒有一個<x>
元素引用它們?在這個例子中,結果應該是#a
和#c
。
基於this question我試過//e[ not(//x[@ref=concat("#",@id)]) ]
,但這並不能省略引用的元素:
# Ruby code using Nokogiri
puts doc.xpath('//e[ not(//x[@ref=concat("#",@id)]) ]')
#=> <e id="a"/>
#=> <e id="b"/>
#=> <e id="c"/>
有一種使用在發現設爲進一步查詢中的其他元素的其他屬性的值的屬性的方法?
請注意,在Ruby中,您可以通過'doc.xpath('// e')實現多重傳遞。 doc.at(「// x [@ref ='## {e ['id']}']」)}';這個問題是關於一個XPath表達式來找到正確的集合。 – Phrogz