我正在尝试格式化这个和其他元素,所以看起来像这样2,590:
<Add_Amount>2,59</Add_Amount>
这样做:
<xsl:decimal-format name="dkk" decimal-separator="," grouping-separator="."/>
...
<xsl:value-of select="translate(format-number(Add_Amount, '#.###,000', 'dkk'), ',', '.')" />
输出出来的NaN。 非常感谢任何帮助。
感谢。
//丹尼尔
答案 0 :(得分:11)
使用强>:
format-number(translate(., ',','.'), '#.###,000', 'd')
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:decimal-format name="d"
decimal-separator="," grouping-separator="."/>
<xsl:template match="/">
<xsl:value-of select=
"format-number(translate(., ',','.'), '#.###,000', 'd')"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<Add_Amount>2,59</Add_Amount>
产生想要的结果:
2,590
您的代码的问题是 2,59
不是有效数字,必须转换为此类数,然后才将其作为format-number()
的第一个参数传递。< / p>
答案 1 :(得分:4)
在Dimitre Novatchev的回答中对translate()
的额外呼吁似乎没有必要。 <xsl:decimal-format>
的使用应该足够了,如下:
<xsl:decimal-format name="euroFormat" decimal-separator="," grouping-separator="."/>
<xsl:value-of select="format-number(text(), '###.###,00', 'euroFormat')"/>
答案 2 :(得分:0)
你可以这样做:
<xsl:value-of select="format-number(number, '#,###')"/>