我有这样的节点我的XML文档中:如何编写一个XPath来获取所有有两个已知孩子的父母?
<parent ...>
<a .../>
<b .../>
</parent>
父节点可以同时具有A和B,只有一个,只有B,或没有。我想写一个XPath来让所有的父母都有。我可以这样做吗?
家长也可以有其他孩子。
我有这样的节点我的XML文档中:如何编写一个XPath来获取所有有两个已知孩子的父母?
<parent ...>
<a .../>
<b .../>
</parent>
父节点可以同时具有A和B,只有一个,只有B,或没有。我想写一个XPath来让所有的父母都有。我可以这样做吗?
家长也可以有其他孩子。
<element>
<a/>
<b/>
</element>
element[child::a][child::b]
这应该选择所有元素与a和b作为直接的孩子,无论他们是否有额外的孩子。或者,更简单地说:
element[a][b]
......我想。
像这样的东西应该这样做: // [A和B]
//parent[count(a) > 0 and count(b) > 0]
应该这样做。有一个伟大的XPath测试平台here,使生活很容易,在亮点方面匹配的节点等
那就必须是parent :: * [count(a)> 0和count(b)> 0],不是吗? – 2009-07-08 18:40:31
//*[child::a and child::b]
明显:
parent[a and b]
孩子轴是谓词隐式的,这意味着没有需要提及它。
parent[child::a and child::b] <!-- the same, only longer -->
使用两个单独的谓词是可能的,只要条件合取(“和”):
parent[a][b] <!-- the same, slightly shorter -->
这表达长度节省三个字符。但是,使用两个谓词会触发两个单独的检查,因为它们被一个接一个地应用。使用一个带布尔运算符的谓词似乎是对我来说最简单和最干净的方法。
是否要专门搜索名为'parent'的父节点或是否找到具有'a'和'b'子元素的节点? – 2009-07-08 19:00:52