我想选择所有包含某个“条件”元素的“目标”元素。到目前为止很容易:“// target [descendant :: condition]”
问题是:我的“目标”元素是嵌套的,我不想选择那些“目标”元素,其中一个或多个“条件”元素就在另一个“目标”元素内。
请参阅,我的XML看起来像这样
<ROOT>
<target id="1">
<condition/>
</target>
<target id="2">
<any_tag/>
</target>
<target id="3">
<condition/>
<target id="4">
<condition>
</target>
</target>
<target id="5">
<target id="6">
<condition/>
</target>
</target>
</ROOT>
我想选择带有ids 1,3,4和6但不是5的“目标”元素,因为在此标记与“条件”标记之间还有另一个“目标”标记。
(在我的真实代码中,“条件”元素不是“目标”元素的直接子元素。我为了简化而改变了它。)
答案 0 :(得分:2)
在这种情况下,您可以使用ancestor
//condition/ancestor::target[1]
您应该使用[1]
仅选择每个condition
的第一个祖先。