如何统计有两个孩子的元素?

时间:2013-10-30 16:32:54

标签: xslt count

我有像这样的xml;

 <A Ref=""blah"" Completed=""Y"" ErrorCount=""0"">
      <B Type=""Output"">
           <C>
                <D Val=""02"" />
                <E Val=""05"" />
           </C>  
           <C>
                <D Val=""02"" />
                <F Val=""05"" />
           </C>             
      </B >
 </A>

我想计算同时拥有D和E孩子的'C'元素的数量。所以在这种情况下它将是1(因为第二个C具有D&amp; F)

我可以使用

获取计数
<xsl:value-of select="count(B/C/child::D"/>

但是我看不出如何指定C也应该有子E。

我试过

<xsl:value-of select="count(B/C/child::D and B/C/child::E"/>

但它不喜欢它

1 个答案:

答案 0 :(得分:3)

使用谓词:

<xsl:value-of select="count(B/C[D and E])"/>

方括号表达式对所选节点集合施加约束,所以这就是找到当前节点的所有B元素子节点,然后为每个节点找到它们的C元素子节点但过滤该列表仅包括那些自己至少有一个D和一个E孩子的人。