2014-03-18 70 views
0

我有一個相當大的XML文檔。該XML的基本結構如下:xpath:XML文檔中的元素

<document> 
    <title> 
     Title 
    </title> 
    <frontm> 
     <toc> 
     </toc> 
    </frontm> 
    <body> 
     <section> 
      <section> 
       <p>content</p> 
      </section> 
     </section> 
     <section> 
      <section> 
       <p>content</p> 
      </section> 
     </section> 
     <section> 
      <section> 
       <p>content</p> 
      </section> 
     </section> 
     <section> 
      <section> 
       <p>content</p> 
      </section> 
     </section> 
    </body> 
</document> 

我曾嘗試下面的XPath但它返回段的只是一半數量:

count(../../body/section/section/following-sibling::node())+1 

任何想法?

編輯:我想要計算部分的節數(應用於上面的示例中,xpath應該返回4)。

+0

你究竟想要計算什麼?所有元素,所有'section'元素,只是'section'元素不嵌套在另一個'section'內,或其他。換一種說法,您希望得到您提供的示例XML的答案是什麼? –

+0

您的XPath表達式是* relative *表達式。如果你不告訴它應該在哪個上下文中進行考慮(當前節點是什麼),這是毫無意義的。你能把它表達爲絕對錶達式(以/開頭)嗎? – helderdarocha

+0

對不起,我不清楚我想達到什麼(英語不是我的本地語言)。我已經添加了一個更好的解釋。 – user2075124

回答

0

看來你想如果你想算葉節點部分未做假設約p孩子

count(//section[ancestor::section]) 

同樣計數section元素

,如果要算上母公司部分

count(//section[section]) 

如果要計數全部 section eleme nts,在任何級別:

count(//section) 
+0

輝煌。謝謝! – user2075124