有一项任务是使用 XSLT 输出从数据库中获取的一些数据。应用程序当前区域设置为 ru_RU,因此小数点分隔符为逗号。看起来像
<data>
<row>
<date value="28.04.2010"/>
<clicks value="281"/>
<depth value="1,7"/>
<row>
<row>
<date value="29.04.2010"/>
<clicks value="15"/>
<depth value="3"/>
<row>
<data>
需要将“深度”值格式化为十进制数:1,70 和 3,00。当我尝试转换值时:
<xsl:value-of select="format-number(number(depth/@value)), '##.##'"/>
我得到 NaN,因为 XSLT 处理器在将属性值转换为数字时不将逗号视为小数点分隔符。
当我手动将源字符串从“十进制逗号”格式“翻译”为“小数点”格式时,它以某种方式有所帮助
<xsl:value-of select="format-number(number(translate(depth/@value, ',', '.'))), '##.##'"/>
但它看起来很丑。
有没有更正确和集中的方式告诉处理器逗号是小数点分隔符?
最佳答案
没有比这更正确或更集中的方式了。 我这样做的方法是使用特殊的 xslt 预处理 XML 文件,它也可以按照您的方式转换数字。
关于xslt - 使用 XSLT 将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738537/