在XSLT 2.0中格式化包含小数点和前导零的数字

时间:2018-07-19 10:06:26

标签: xml xslt-2.0 number-formatting

在打印带点的十进制值(0)时遇到问题。根据要求,应打印前导(0)零:

XML:。这里所有百分比值都在0.something中。

<root>
    <rate final="280" percent="0.1921"/>
    <rate final="180" percent="0.18"/>
    <rate final="170" percent="0.17201"/>
    <rate final="70" percent="0.1"/>
</root>

XSLT:我正在使用具有格式编号功能的XSLT,因为我只需要在点(。)之后输入两位数字即可。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:output indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="rate">
        <rate>
            <xsl:apply-templates select="@*"/>
            <xsl:value-of select="concat('Final Percentage is : ', format-number(@percent, '#,###,###,###.00'),'%')"/>
        </rate>
    </xsl:template>

</xsl:stylesheet>

所需的输出:我想要以0开头的结果。

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <rate final="280" percent="0.1921">Final Percentage is : 0.19%</rate>
    <rate final="180" percent="0.18">Final Percentage is : 0.18%</rate>
    <rate final="170" percent="0.17201">Final Percentage is : 0.17%</rate>
    <rate final="70" percent="0.1">Final Percentage is : 0.10%</rate>
</root>

当前输出:我通过XSLT获得的当前结果

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <rate final="280" percent="0.1921">Final Percentage is : .19%</rate>
    <rate final="180" percent="0.18">Final Percentage is : .18%</rate>
    <rate final="170" percent="0.17201">Final Percentage is : .17%</rate>
    <rate final="70" percent="0.1">Final Percentage is : .10%</rate>
</root>

1 个答案:

答案 0 :(得分:0)

在评论中得到了马丁·霍恩(Martin Honnen)的答复:

将format-number调用的第二个参数更改为0.00,以指示您需要前导零。