带逗号的XSLT格式号

Dan*_*ner 9 xml format xslt

我正在尝试格式化这个和其他元素,所以它看起来像这样2,590:

<Add_Amount>2,59</Add_Amount>
Run Code Online (Sandbox Code Playgroud)

这样做:

<xsl:decimal-format name="dkk" decimal-separator="," grouping-separator="."/>
Run Code Online (Sandbox Code Playgroud)

....

    <xsl:value-of select="translate(format-number(Add_Amount, '#.###,000', 'dkk'), ',', '.')" />
Run Code Online (Sandbox Code Playgroud)

输出来自NaN.任何帮助是极大的赞赏.

谢谢.

//丹尼尔

Dim*_*hev 11

用途:

format-number(translate(., ',','.'), '#.###,000', 'd')
Run Code Online (Sandbox Code Playgroud)

这种转变:

<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>
Run Code Online (Sandbox Code Playgroud)

当应用于提供的XML文档时:

<Add_Amount>2,59</Add_Amount>
Run Code Online (Sandbox Code Playgroud)

产生想要的结果:

2,590
Run Code Online (Sandbox Code Playgroud)

你的代码的问题是2,59不是一个有效的数字,必须转换为这个,然后将它作为第一个参数传递给format-number().


Bar*_*mel 5

translate()Dimitre Novatchev的答案中的额外呼叫似乎没有必要。使用<xsl:decimal-format>足够,例如:

<xsl:decimal-format name="euroFormat" decimal-separator="," grouping-separator="."/>
<xsl:value-of select="format-number(text(), '###.###,00', 'euroFormat')"/>
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的: &lt;xsl:decimal-format name="euroFormat"decimal-separator="," grouping-separator="."/&gt; &lt;xsl:value-of select="format-number('12345,5', '###.###,00', 'euroFormat')"/&gt; 返回 NaN (2认同)