XPATH:Count Preceding Div元素

时间:2016-09-17 17:32:28

标签: xml xslt xpath

当上下文指向division / division / *主题时,我想计算body / division下的所有主题标签,并将结果添加到上一个body / division / division标签的计数中。

输出=身体/部门下的所有主题+身体/部门/部门的数量

<?xml version="1.0" encoding="UTF-8"?>
    <body>
       <division>
          <Atopic><longtitle>TitleDiv1 Atopic</longtitle></Atopic>
          <Btopic><longtitle>TitleDiv1 Btopic</longtitle></Btopic>
          <Ctopic><longtitle>TitleDiv1 Ctopic</longtitle></Ctopic>
          <division>
             <Atopic><longtitle>TitleDiv1.1 Atopic</longtitle></Atopic>
          </division>
          <division>
                <Atopic><longtitle>TitleDiv1.2 Atopic</longtitle></Atopic>
          </division>
       </division>
       <division>
            <Atopic><longtitle>TitleDiv2 Atopic</longtitle></Atopic>
            <Dtopic><longtitle>TitleDiv2 Dtopic</longtitle></Dtopic>
          <division>
             <Atopic><longtitle>TitleDiv2.1 Atopic</longtitle></Atopic>
          </division>
           <division>
             <Ctopic><longtitle>TitleDiv2.2 Ctopic</longtitle></Ctopic>
          </division>
       </division>
    </body> 

所以例如

  1. 如果我的上下文在Div 1/2中,逻辑应该计算body / division1下的所有*主题。所以它应该返回3(特应性,Btopic,Ctopic)。这里没有前面的身体/分裂/分裂元素。所以o / p = 3 + 0 = 3
                                                                                      2.与Div1 / 3类似,它应该计算正文/分区标记下的*主题,即3,并且还计算在body / div / div之前(即3 + 1 = 4)。

  2. 当上下文为Div2 / 1时,计数器应仅考虑body / division2下的*主题 因此,如果我使用Div2 / 1 Atopic的逻辑,它应返回“2”,因为Div2标签(正文/分区)有2个主题,没有前面的body / div / div。输出= 2。在这里,前面的身体/分区/分区应考虑Div2标签,Div1的身体/分区/分区不应被考虑。简而言之,当遇到新的身体/分裂时,应该重置身体/分裂/分裂。

  3. 建议。

1 个答案:

答案 0 :(得分:1)

我只在这里猜测,但在我看来,你想要:

.divs

未经测试,因为我不知道如何针对您的代码进行测试。