xml - 在 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 与 format-number 函数一起使用,因为我只需要点 (.) 后的两位数。
<?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 以指示您需要前导零。
推荐阅读
- android - 错误:找不到 Gradle DSL 方法:'freeImplementation()'
- python - 如何在 dockerized django 中重新加载 python 代码?
- r - 根据特定属性对 igraph 进行子图化以仅包含前 N 个“最大”节点
- xml - 如何定义 avro 模式以在 Nifi 上使用 ConvertRecord 获取 xml 属性?
- mysql - 我需要替换字符串的字符 \\ 并使用 JSON_EXTRACT 读取
- windows - 同时无声地从一个批处理文件运行多个 .exe 文件
- razorpay - 如何使用android在后端生成razorpay订单ID?
- javascript - 如何在 d3.js v5 中设置初始缩放
- android - 使用 android 的面部识别对多个用户进行身份验证
- jquery - 如何让 ClipboardJS 复制文本及其超链接?