我有像这样的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"/>
但它不喜欢它
答案 0 :(得分:3)
使用谓词:
<xsl:value-of select="count(B/C[D and E])"/>
方括号表达式对所选节点集合施加约束,所以这就是找到当前节点的所有B元素子节点,然后为每个节点找到它们的C元素子节点但过滤该列表仅包括那些自己至少有一个D和一个E孩子的人。