2010-04-14 60 views
3

我有一個給定的XML文檔(結構不能改變)並且想要獲得寫在節點上方的註釋。該文件看起來像這樣:使用XPath訪問註釋一個扁平的層次

<!--Some comment here-->  
    <attribute name="Title">Book A</attribute> 
    <attribute name="Author"> 
     <value>Joe Doe</value> 
     <value>John Miller</value> 
    </attribute> 
<!--Some comment here--> 
    <attribute name="Code">1</attribute> 

所以評論是可選的,但如果有一個,我想要獲得每個屬性上面的評論。 使用/*/comment()[n]會給我評論n,但對於n = 2我自然會得到第三個屬性的評論,所以屬性和評論之間沒有任何聯繫任何想法? 感謝

回答

0

使用

//comment()[following-sibling::*[1][self::attribute]] 

這是更緊湊,更比當前選擇的答案精確//縮寫是必要的,因爲沒有提供格式良好的XML文檔,並且註釋節點的嵌套級別未知。

+0

我明白了,謝謝 – Sebastian 2010-04-14 15:19:09

1

如果您想選擇後跟一個attribute元素的評論,那麼這應該工作:

/*/comment()[following-sibling::*[position()=1 and name()='attribute']] 
+0

太棒了,那正是我在找的東西。謝謝 – Sebastian 2010-04-14 11:42:17

相關問題