我有以下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属性,则仍应包含该子节点。
答案 0 :(得分:5)
问:我想选择所有子节点,其中任何一个祖先都不包含IsEnabled =“0” 试试这个:
//Child[not(ancestor::*[@IsEnabled='0'])]