[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Format Phone number


Subject: RE: [xsl] Format Phone number
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 21 Dec 2009 12:04:28 -0000

There is actually a difference between XSLT 1.0 and XSLT 2.0 here. 

In XSLT 1.0, the specification of the picture format for format-number was
based on the specification of class DecimalFormat in Java JDK 1.1, which can
be found here:

http://sunsite.dcc.uchile.cl/java/docs/jdk1.1.8/docs/api/java.text.DecimalFo
rmat.html

It states:

The grouping separator is commonly used for thousands, but in some countries
for ten-thousands. The interval is a constant number of digits between the
grouping characters, such as 100,000,000 or 1,0000,0000. If you supply a
pattern with multiple grouping characters, the interval between the last one
and the end of the integer is the one that is used.

In XSLT 2.0, the specification is no longer based on the JDK, and the
interval between grouping separators is variable.

I would not recommend using format-number() for formatting phone numbers.
Use concat(substring(X, 1, 3), '-', substring(X, 4, 3), '-', ....).

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 



> -----Original Message-----
> From: Anil Kumar Veeramalli [mailto:anil.v@xxxxxxxxxxxxxxxxxxxxx] 
> Sent: 21 December 2009 11:20
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Format Phone number
> 
> yes there is a issue with even this approach.
> I am using XSL 1.0
> 1.
> 
> <xsl:decimal-format name="phonenumber" decimal-separator="-" 
> grouping-separator="&#x2011;"/> <xsl:template match="/">  
> <xsl:value-of select='format-number(1234567890 div 10000, 
> "#&#x2011;###-####", "phonenumber")' /> </xsl:template>
> 
> 
> its returning 123-456-789 which is wrong. (Zero is missing)
> 
> 2.
> <xsl:decimal-format name="staff" grouping-separator="-"/>
> 
>    <xsl:value-of select='format-number(9058957869, 
> "000-000-0000", "staff")'/>
> 
> its returning me 90-5895-7869 which is wrong.
> 
> required out put is 905-895-7869
> 
> Please suggest me the correct approach.
> 
> Thanks,
> Anil
> Michael Kay wrote:
> 
> >> thanks for your response. this is returing me  xx-xxxx-xxxx format 
> >> not xxx-xxx-xxxx.
> >>
> >> what could be the issue.
> >>     
> >
> > That looks like a bug in your XSLT processor.
> >
> > (But this is not the way I would recommend tackling this problem).
> >
> > Regards,
> >
> > Michael Kay
> > http://www.saxonica.com/
> > http://twitter.com/michaelhkay


Current Thread
Keywords