繁体   English   中英

我可以在xsl中存储值的总和吗?

[英]Can I store sums of values in xsl?

假设我有一个Xml片段,我正在使用XSL:

<Columns>
   <Column width="100">
   <Column width="50">
   <Column width="75">
   <Column width="33">
</Columns>

基本上,我想做的是,当我遍历每个节点时,我需要存储要用于当前Column节点的先前“ width”属性的总和。 例如,当我到达最后一个“列”节点(宽度为33)时,我想访问某种变量(100 + 50 + 75)中所有先前宽度的总和。 我知道变量的值一旦在XSL中设置就无法更改,所以我想知道是否存在使用模板参数的某种方法或某些方法来做到这一点。 提前致谢!

本质上,您可以利用模板递归的优势,并将传递给下一个同级的集合限制为仅一个。 从第一个项目开始,然后您可以连续将更新的值传递给下一个模板调用。

<xsl:template match="/">
    <xsl:apply-templates select="Columns/Column[1]" />
</xsl:template>

<xsl:template match="Column">
    <xsl:param name="runningtotal" select="0"/>
    [<xsl:value-of select="@width"/>:<xsl:value-of select="$runningtotal+@width"/>]
    <xsl:apply-templates select="following-sibling::Column[1]" >
        <xsl:with-param name="runningtotal" select="$runningtotal+@width"/>
    </xsl:apply-templates>
</xsl:template>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM