XPATH:获得前儿童

时间:2016-09-16 12:15:15

标签: xml xslt xpath

我有以下XML结构,其中DIV2和DIV3在DIV1中。 当我的上下文是DIV2 / DIV3时,我想计算DIV1下*主题元素的数量。

所以在这里我想返回“2”,因为DIV1有2个元素(Atopic和Btopic)。 并返回“2”,因为当从DIV3使用时,DIV1有2个元素(Atopic和Btopic)。同样,DIV4的孩子应该返回“1”。

唯一的考虑因素是身体/分裂的孩子需要被计算而不是分裂/分裂

  <body>
      <division>
         ....DIV1....
        <Atopic> .. </Atopic>
        <Btopic> .. </Btopic>
           <division>
              .....DIV2..........
              <Atopic> .. </Atopic>
              <Btopic> .. </Btopic>
           </division>  
            <division>
              .....DIV3..........
              <Atopic> .. </Atopic>
              <Btopic> .. </Btopic>
           </division>
      </division>
      <division>
       ....DIV4....
       <Ctopic> .. </Ctopic>
      </division>
    <body>

请帮助通过xpath实现这一目标。

1 个答案:

答案 0 :(得分:0)

  

唯一的考虑因素是身体/分裂的孩子需要   算了,而不是分裂/分裂

认为会转化为:

<xsl:value-of select="count(ancestor::division[last()]/*[contains(name(), 'topic')])"/>