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

Format a number containing a decimal point with leading zeroes in XSLT 2.0

我在用点打印十进制值 (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>

Martin Honnen 在评论中回答:

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