大家好,
在xsl:stylesheet version="1.0"中,有没有可能对格式为1,185.00的数字进行求和?例如:
<document>
<number>1,185.00</number>
<number>2,000.11</number>
</document>
结果应该是:
<document>
<sum>3185.11</sum>
<document>
大家好,
在xsl:stylesheet version="1.0"中,有没有可能对格式为1,185.00的数字进行求和?例如:
<document>
<number>1,185.00</number>
<number>2,000.11</number>
</document>
结果应该是:
<document>
<sum>3185.11</sum>
<document>
translate
和format-number
,以便在显示数据时进行处理。<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<document>
<xsl:apply-templates select="document/number[1]">
<xsl:with-param name="val" select="0"/>
</xsl:apply-templates>
</document>
</xsl:template>
<xsl:template match="number">
<xsl:param name="val"/>
<xsl:choose>
<xsl:when test="not(following::number)">
<sum>
<xsl:value-of select="format-number($val + translate(./text(),',',''), '###.##')"/>
</sum>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="following::number">
<xsl:with-param name="val" select="$val + translate(./text(),',','')"/>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
对于您的输入,它会生成以下输出:
<?xml version='1.0' encoding='UTF-8' ?>
<document>
<sum>3185.11</sum>
</document>
$val + number(translate(./text(),',',''))
与这个$val + translate(.,',','')
是一样的。 - user357812