XPath选择除嵌套之外的后代

时间:2014-01-24 09:21:23

标签: xpath nested

我想选择所有包含某个“条件”元素的“目标”元素。到目前为止很容易:“// 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的“目标”元素,因为在此标记与“条件”标记之间还有另一个“目标”标记。

(在我的真实代码中,“条件”元素不是“目标”元素的直接子元素。我为了简化而改变了它。)

1 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用ancestor

//condition/ancestor::target[1]

您应该使用[1]仅选择每个condition的第一个祖先。