带逗号的XSLT格式号

时间:2010-09-21 09:33:28

标签: xml xslt format

我正在尝试格式化这个和其他元素,所以看起来像这样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。 非常感谢任何帮助。

感谢。

//丹尼尔

3 个答案:

答案 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, '#,###')"/>