2013-06-19 59 views
3

我有以下XML結構:XPath的選擇節點,所有的父節點不包含特定屬性和價值

<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

問:我想選擇其中任何它的祖先不包含的IsEnabled =「0」 試試這個所有子節點:

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

是後話後同樣2秒:) – dirkk

+0

啊!太好了!我正在嘗試// Child [ancestor :: * [not(@ IsEnabled ='0')]] - 只需移動not。謝謝! –

+0

這太棒了,我不知道該怎麼做! – kamituel

相關問題