XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Alexander AhammerSubject: Formating numbers
Author: Alexander Ahammer
Date: 14 Feb 2006 05:54 AM
I have a small problem with the format my numbers have. I am trying to convert the numbers having a comma as a separator into ones that have a dot.

<games>
<quote1>13,30</quote1>
<quote1>3,40</quote1>
<quote1>23,50</quote1>
<quote1>3,60</quote1>
<quote1>113,70</quote1>
<quote1>3,80</quote1>
</games>

The output should be something similar to

<games>
<quote1>13.30</quote1>
<quote1>3.40</quote1>
<quote1>23.50</quote1>
<quote1>3.60</quote1>
<quote1>113.70</quote1>
<quote1>3.80</quote1>
</games>

I dont know how to do it with substring and then concat, since the numbers do not have a constant length.

Postnext
Alexander AhammerSubject: Formating numbers
Author: Alexander Ahammer
Date: 14 Feb 2006 06:34 AM
I would like to add that i have tried using the following script inorder to see if this could work but i am getting the output "NaN".

<xsl:variable name="number"> 30,6 </xsl:variable>
<xsl:value-of select="format-number($number, '##.00')"/>

Postnext
Alexander AhammerSubject: Formating numbers
Author: Alexander Ahammer
Date: 14 Feb 2006 06:51 AM
Ok i have found out a way to do this. But please can somebody tell me how i would have done it with the "format-number" way of doing it.

<for-each select="_here_comes_the_number">
<xsl:variable name="Before_the_dot" select="substring-before(., ',')" />
<xsl:variable name="After_the_dot" select="substring-after(., ',')" />
<xsl:value-of select="concat($M, '.',$Y)" />
</for-each>

Postnext
Tony LavinioSubject: Formating numbers
Author: Tony Lavinio
Date: 14 Feb 2006 09:11 AM
A more typical way of doing this is like this:

<xsl:for-each select="games/quote1">
<xsl:value-of select="format-number(translate(., ',', '.'), '##.00')"/>
</xsl:for-each>

This is what the translate function is for.

Postnext
Minollo I.Subject: Formating numbers
Author: Minollo I.
Date: 14 Feb 2006 09:17 AM
Alexander,
first, the easiest way to do that is:

<xsl:variable name="aNumber" select="translate(., ',', '.')"/>
<xsl:value-of select="format-number($aNumber, '##.00')"/>

format-number allows you to format a number the way you want (you can even use <xsl:decimal-format/> to control various aspects of how it works); but it needs to work on a *number*; and in XML "30,6" is not a number, as you must use '.' to separate decimals and not use ',', not even as a grouping separator.

Minollo

Posttop
Alexander AhammerSubject: Formating numbers
Author: Alexander Ahammer
Date: 14 Feb 2006 09:05 PM
Ok i get it. Of course "Translate"!

Thanks to both of you.


I must admit that this board is great concerning xslt questions ( i dont know about the other sub-boards never been there).
Great job.

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.