2014-01-24 47 views
3

選擇後代我想選擇所有「目標」 elemtents至極含有某處「條件」元素。到目前爲止,它很容易:「// target [descendant :: condition]」的XPath除了嵌套

問題是:我的「目標」元素是嵌套的,我不想選擇那些「目標」元素在一個或多個「條件「元素就在另一個」目標「元素內。

看,我的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,因爲這個標籤和「條件」標籤的「目標」元素還有另一個「目標」標籤。

(在我真正的代碼,「條件」元素是無處「目標」元素的直接孩子。我改變了用於簡化的原因。)

回答

2

您可以在此情況下,使用ancestor

//condition/ancestor::target[1] 

您應該使用[1]選擇每個condition只始祖。

+0

我想到了這一點,但我認爲這可能會選擇一些「目標」元素不止一次,因爲在某些情況下,有一個以上的「條件」元素存在。但不知何故,它的作品!謝謝! – cis

+0

,我不認爲這是可能選擇一個元素不止一次。這就是它工作的原因。別客氣。 – Ievgen