考虑下面的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