6

我有以下 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 属性,则仍应包含子节点。

4

1 回答 1

11

问:我想选择其任何祖先不包含 IsEnabled="0" 的所有子节点 试试这个:

//Child[not(ancestor::*[@IsEnabled='0'])]
于 2013-06-19T13:17:29.430 回答