XPath选择所有父节点不包含特定属性和值的节点

时间:2013-06-19 13:04:59

标签: xpath

我有以下XML结构:

<root>
  <Level1 IsEnabled="0"> <!-- Disabled -->
    <Level2 IsEnabled="1">
      <Level3 IsEnabled="1">
        <Level4 IsEnabled="1">
          <Child /> <!-- Don't include this one -->
        </Level4>
      </Level3>
    </Level2>
  </Level1>
  <Level1 IsEnabled="1">
    <Level2 IsEnabled="1">
      <Level3 IsEnabled="0"> <!-- Disabled -->
        <Level4 IsEnabled="1">
          <Child /> <!-- Don't include this one -->
        </Level4>
      </Level3>
    </Level2>
  </Level1>
  <Level1 IsEnabled="1">
    <Level2 IsEnabled="1">
      <Level3 IsEnabled="1">
        <Level4 IsEnabled="1">
          <Child /><!-- Include this one -->
        </Level4>
      </Level3>
    </Level2>
   </Level1>
</root>

我想选择其中任何祖先不包含IsEnabled =“0”的所有子节点。所以对于上面的XML我只想选择最后一个子节点。此外,如果祖先节点不包含IsEnabled属性,则仍应包含该子节点。

1 个答案:

答案 0 :(得分:5)

问:我想选择所有子节点,其中任何一个祖先都不包含IsEnabled =“0” 试试这个:

//Child[not(ancestor::*[@IsEnabled='0'])]