2016-10-26 43 views
0

假設我有一個這樣的HTML:檢索每個兄弟姐妹節點與特定ID使用XPath

<node> 
     <child class="color" id="red"></child> 
</node> 
<node> 
     <child class="ok"></child> 
</node> 
<node> 
     <child class="ok"></child> 
</node> 
<node> 
     <child class="color" id="blue"></child> 
</node> 
<node> 
     <child class="ok"></child> 
</node> 

我想有一個輸出:

red 

red 

blue 

也就是說,產生了我

:每 <child>他們有 class="ok"

我想什麼顏色的節點信息

//child[@class="ok"]/parent::node/preceding-sibling::*[child::*[@class="color"]][1] 

直覺上我以爲每個孩子都會得到一個「節點#」節點,但它不起作用。

+0

你的HTML似乎沒有有效。關閉''在哪裏關於'' – SomeDude

+0

@svasa認爲它現在好了 – Mariah

回答

0

就我所見,這不能用純XPath 1.0來完成。使用更高版本的XPath的支持FLWOR,你可以做如下:

for $node in //node[child/@class='ok'] 
return $node/preceding-sibling::node[child/@id][1]/child/@id 

demo

輸出:

red 
red 
blue