XSLT format-number with comma

孤人 提交于 2019-12-18 02:55:14

问题


I'm trying to format this and other elements alike, so it would look like this 2,590:

<Add_Amount>2,59</Add_Amount>

Doing it like this:

<xsl:decimal-format name="dkk" decimal-separator="," grouping-separator="."/>

....

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

And the output comes out NaN. Any help is greatly appreciated.

Thanks.

//Daniel


回答1:


Use:

format-number(translate(., ',','.'), '#.###,000', 'd')

This transformation:

<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>

when applied on the provided XML document:

<Add_Amount>2,59</Add_Amount>

produces the wanted result:

2,590

The problem with your code is that 2,59 isn't a valid number and must be converted to such, before passing this as the first argument of format-number().




回答2:


The extra call to translate() in Dimitre Novatchev's answer seems unnecessary. The use of <xsl:decimal-format> should be enough, like this:

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



回答3:


You can simply do this like:

<xsl:value-of select="format-number(number, '#,###')"/>


来源:https://stackoverflow.com/questions/3758978/xslt-format-number-with-comma

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!