2014-03-18 42 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