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
Specifies the format pattern. Here are some of the characters used in the formatting pattern: 0 (Digit) # (Digit, zero shows as absent)
For example : 9.2750 rounds up to 9.28, but 9.2850 rounds down to 9.28 . 9.2950 rounds up to 9.30, but 9.3050 rounds down to 9.30. Here is the XSLT I am using: <xsl:value-of select="format-number($number,'##.
The format date on XSLT Technique uses a template dealing with Gregorian Time and Internationalization. The parameter for this date function is a picture string that encloses code in square brackets(D[07]). The name attributes declare date format or default date. It should be declared only once.
Accordingly, XPath and XSLT use the string "div" for division. Lines E and F show how parentheses have the same effect on operator precedence that they have in normal math notation: without them, multiplication happens before addition, so that 4 + 3.2 * 11 = 4 + 35.2.
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()
.
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')"/>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With