2013-10-30 18 views
1

我有这样的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 & 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"/> 

,但它不喜欢它

回答

3

使用谓语:

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

方括号表达穿上选择的节点集的约束,还等什么这就是说找到当前节点的所有B元素子元素,然后为每个元素找到它们的C元素子元素,但过滤该列表只包含那些自己至少有一个D元素的元素d一个E孩子。

+0

谢谢,只是想办法弄明白! –

相关问题