这是一个简单的XML文件,我想在其中进行XPath测试:
<Prop>
<Attx>
<Atty tip="ddd"></Atty>
<Atty tip="ddd"></Atty>
<Atty tip="ddd"></Atty>
</Attx>
</Prop>
我想看看所有tip
元素的所有 Atty
属性是否等于ddd
。
我使用以下XPath查询实现了这个:
count(/Prop/Attx/Atty[@tip='ddd'])=count(/Prop/Attx/Atty)
是否有更简单的查询可以实现相同的测试?
答案 0 :(得分:4)
这个XPath表达式:
/Prop/Attx/Atty/@tip != 'ddd'
含义:至少有一个@tip
属性不等于'ddd'
答案 1 :(得分:4)
如果所有Atty元素都具有值为“ddd”的属性 tip ,则此表达式仅返回true:
not(//Atty[not(@tip = 'ddd')])
或者,如果存在没有 tip 属性的Atty元素,则以下表达式也将返回true。如果Atty元素的 tip 属性的值不是“ddd”,则它只返回false:
not(//Atty[@tip and not(@tip = 'ddd')])
当然,路径可以更具体,而不是“ // ”where选择器。应该在XPath 1.0和2.0中工作。