在 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 以指示您需要前导零。
我在用点打印十进制值 (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 以指示您需要前导零。