xslt中的sum xml属性不起作用

时间:2013-07-18 20:24:21

标签: xml xslt

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

我想通过在xslt中使用sum函数从数据/资产/细节中添加数量属性。我按照下面的方式做了,它给出了类型转换错误

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

2 个答案:

答案 0 :(得分:2)

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

因此您需要进行转换,然后需要对转换后的值求和。这在XSLT 2.0中非常简单:

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

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

答案 1 :(得分: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>