<data>
<assets>
<details amount="100"/>
<details amount="50"/>
<details amount="30"/>
</assets>
</data>
我想通过在xslt中使用sum函数从数据/资产/细节中添加数量属性。我按照下面的方式做了,它给出了类型转换错误
<xsl:value-of select="sum(/data/assets/details/@amount)"/>
答案 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>