0
<data>
    <assets>
        <details amount="100"/>
        <details amount="50"/>
        <details amount="30"/>
    </assets>
</data>

我想通过在 xslt 中使用 sum 函数从数据/资产/详细信息中添加数量属性。我按照以下方式进行了类型转换错误

<xsl:value-of select="sum(/data/assets/details/@amount)"/>
4

2 回答 2

2

您修改后的信息表明您的金额值格式为 123,456.78。这不是自动字符串到数字转换可以处理的格式。

所以你需要做一个转换,然后你需要对转换后的值求和。这在 XSLT 2.0 中非常简单:

sum(/data/assets/details/@amount/number(translate(., ',', ''))

在 XSLT 1.0 中要困难得多;唯一干净的解决方案是递归模板,它依次转换和添加每个值。

于 2013-07-19T13:48:10.653 回答
0

请尝试以下 XSLT 以获得结果:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="assets">
<xsl:value-of select="details[1]/@amount + details[2]/@amount + details[3]/@amount"/>
</xsl:template>
</xsl:stylesheet>
于 2013-07-19T09:40:10.423 回答