xslt - 使用 XSLT 将字符串转换为数字

标签 xslt decimal numbers

有一项任务是使用 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/

相关文章:

javascript - 数字和 toFixed ,toPrecision 在 Javascript 中?

xml - 用于对值进行分组和求和的 XSLT

xslt - 使用 XSL 缩进 XML

xml - 使用 XSLT 复制 XML 中的所有节点,支持特殊情况

c# - 为什么这个小数点在 ToString() 上显示小数点后 8 位?

Java作业: Print Arrays with stored random numbers in it

xslt - 如何在xslt中“collapse”而不是“normalize”空白

c++ - 将十六进制转换为十进制 C++

python - 截断十进制值

java - 打印时遇到问题 (java)