【问题标题】:summarize values if condition has met如果条件满足,则汇总值
【发布时间】:2014-01-13 17:04:35
【问题描述】:

例如,我有一个 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 或 grouping 时,如果满足条件,我找不到如何总结价值的方法

完全没用的代码:

<xsl:template match="/A">
    <xsl:for-each select="B">
        <xsl:value-of select="D"/>
        <xsl:text>&#10;</xsl:text> <!-- br -->
    </xsl:for-each>
</xsl:template>

我希望它返回:

15
6

【问题讨论】:

    标签: xml xslt xpath xslt-2.0


    【解决方案1】:

    如果您知道只有 true 值要对 D 值求和,那么您不需要分组,您可以只计算总和并输出其他元素,例如

    <xsl:template match="/A">
      <xsl:value-of select="sum(B[C = 'true']/D), B[not(C = 'true')]/D" separator="&#10;"/>
    </xsl:template>
    

    【讨论】:

      【解决方案2】:

      我想你可以试试这个:

      <xsl:value-of select="sum(//D[preceding-sibling::C ='true'])"/>
      

      【讨论】:

        猜你喜欢
        • 2022-10-07
        • 2017-05-13
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 2020-04-09
        • 2012-05-12
        相关资源
        最近更新 更多