鉴于文件
<a>
<b>
<c/>
<d/>
</b>
<b>
<c/>
<d/>
</b>
</a>
是否可以编写任何布尔xpath,检查所有b节点是否包含c节点。我试过了
boolean(//a/b/c)
但这仅检查至少有一个节点包含c节点,而不是所有节点
答案 0 :(得分:4)
//a/b[c]
会匹配至少有一个b
子元素的所有c
元素。
虽然我会声称有0 b
个元素没有c
作为孩子:
count(//a/b[not(c)]) = 0
答案 1 :(得分:2)
将查询公式化为not(//a/b[not(c)])
(而不是count(...) = 0
)可确保处理器在找到第一个反例后停止,而不必计算所有这些计数器。
如果你想更明确(但也更冗长),你可以使用quantified expression:
every $b in //a/b satisfies $b/c