You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML/XSL新手求助:如何添加节点计算同名节点的总和

解决XML/XSL中同名节点求和的问题

嘿,作为XML/XSL新手碰到这种求和需求太正常啦!你现在的代码只是取出了单个SAC05节点的值,要计算所有同名节点的总和,咱们得用上XSLT的sum()函数,这正是你需要的工具~

问题分析

你当前的代码片段:

<th align="left"><font size="2"><xsl:text>Total Freight & Other Charges: </xsl:text></font></th>
<td><font size="2"> $<xsl:value-of select='format-number(Document-810/SUMMARY/SAC/SAC05, "###,###,##0.00")'/></font></td>

这里的Document-810/SUMMARY/SAC/SAC05只会匹配到第一个符合路径的SAC05节点,没办法把所有同层级的SAC节点下的SAC05数值加起来。

修改方案

只需要把select里的节点路径用sum()函数包裹起来,就能实现所有目标节点的求和:

<th align="left"><font size="2"><xsl:text>Total Freight & Other Charges: </xsl:text></font></th>
<td><font size="2"> $<xsl:value-of select='format-number(sum(Document-810/SUMMARY/SAC/SAC05), "###,###,##0.00")'/></font></td>

额外提示(可选)

如果有些SAC05节点可能是空值或者非数值内容,为了避免求和出错,可以加上过滤条件,只对有效数值求和:

<xsl:value-of select='format-number(sum(Document-810/SUMMARY/SAC/SAC05[number(.) != NaN]), "###,###,##0.00")'/>

或者更简单地过滤掉非正数(根据你的业务场景调整):

<xsl:value-of select='format-number(sum(Document-810/SUMMARY/SAC/SAC05[number(.) > 0]), "###,###,##0.00")'/>

这样就能轻松实现你要的表单总计功能啦!

内容的提问来源于stack exchange,提问作者Hank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:20:51