例如,我有一个XML:
<?xml version="1.0"?>
<A>
<B>
<C>true</C>
<D>5</D>
</B>
<B>
<C>false</C>
<D>6</D>
</B>
<B>
<C>true</C>
<D>10</D>
</B>
</A>
如果C=true
我需要汇总来自D
的值,在其他情况下只需返回原始D
值
当我使用for-each或分组时,如果条件得到满足,我找不到如何总结价值的方法
完全没用的代码:
<xsl:template match="/A">
<xsl:for-each select="B">
<xsl:value-of select="D"/>
<xsl:text> </xsl:text> <!-- br -->
</xsl:for-each>
</xsl:template>
我希望它返回:
15
6
答案 0 :(得分:1)
我想你可以试试这个:
<xsl:value-of select="sum(//D[preceding-sibling::C ='true'])"/>
答案 1 :(得分:1)
如果您知道只有true
值,您想要总结D
值,那么您不需要分组,您只需计算总和并输出其他元素例如
<xsl:template match="/A">
<xsl:value-of select="sum(B[C = 'true']/D), B[not(C = 'true')]/D" separator=" "/>
</xsl:template>