Xpath - 检查所有元素都有子元素
Xpath - check all elements have sub elements
给定文档
<a>
<b>
<c/>
<d/>
</b>
<b>
<c/>
<d/>
</b>
</a>
您是否可以编写任何布尔 xpath 来检查所有 b 节点是否包含一个 c 节点。我试过了
boolean(//a/b/c)
但这只检查至少一个节点包含一个 c 节点,而不是所有节点
//a/b[c]
将匹配具有至少一个 c
child 元素的所有 b
元素。
尽管我断言有 0 个 b
元素没有 c
作为 child:
count(//a/b[not(c)]) = 0
将查询公式化为 not(//a/b[not(c)])
(而不是 count(...) = 0
)确保处理器可以在找到第一个反例后停止,而不必对所有反例进行计数。
如果你想更明确(但也更冗长),你可以使用 quantified expression:
every $b in //a/b satisfies $b/c
给定文档
<a>
<b>
<c/>
<d/>
</b>
<b>
<c/>
<d/>
</b>
</a>
您是否可以编写任何布尔 xpath 来检查所有 b 节点是否包含一个 c 节点。我试过了
boolean(//a/b/c)
但这只检查至少一个节点包含一个 c 节点,而不是所有节点
//a/b[c]
将匹配具有至少一个 c
child 元素的所有 b
元素。
尽管我断言有 0 个 b
元素没有 c
作为 child:
count(//a/b[not(c)]) = 0
将查询公式化为 not(//a/b[not(c)])
(而不是 count(...) = 0
)确保处理器可以在找到第一个反例后停止,而不必对所有反例进行计数。
如果你想更明确(但也更冗长),你可以使用 quantified expression:
every $b in //a/b satisfies $b/c