RE: [xsl] Unexpected Results with format-number()

Subject: RE: [xsl] Unexpected Results with format-number()
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 19 Aug 2007 14:09:17 +0100
A fix for this problem has been produced and is in the Saxon Subversion
repository on SourceForge. As previously reported, the problem arose as a
side-effect of a patch released in Saxon 8.9.0.4.

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


> -----Original Message-----
> From: Angela Williams [mailto:Angela.Williams@xxxxxxxxxxxxxxxxxx] 
> Sent: 16 August 2007 00:20
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Unexpected Results with format-number()
> 
> I've just noticed a difference in the way small numbers are 
> formatting.
> When I wrote this a few weeks ago, small numbers formatted 
> with the correct precision.  Now it seems the format string 
> is being ignored.
> 
> I believe I was using Saxon 8.8 when I first wrote the code. 
> I updated to Saxon 8.9.0.4 yesterday, but that may just be a 
> coincidence.
> 
> What am I missing?
> 
> Sample XML:
> <?xml version="1.0" encoding="UTF-8"?>
> <values>
>    <amt>-0.003000</amt>
>    <amt>-0.001500</amt>
>    <amt>0.003000</amt>
>    <amt>0.00</amt>
>    <amt>0</amt>
> </values>
> 
> Expected output:
> amt: [-0.003]  formatted-value: [-$0.00]
> amt: [-0.0015] formatted-value: [-$0.00] 
> amt: [0.003]   formatted-value: [$0.00] 
> amt: [0]       formatted-value: [$0.00] 
> amt: [0]       formatted-value: [$0.00] 
> 
> Actual output:
> amt: [-0.003]  formatted-value: [-$0]
> amt: [-0.0015] formatted-value: [-$0] 
> amt: [0.003]   formatted-value: [$0] 
> amt: [0]       formatted-value: [$0] 
> amt: [0]       formatted-value: [$0] 
> 
> Stylesheet:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet
>   xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
>   xmlns:fk="http://www.the401kcompany.com/functions"; 
>   version="2.0">
> 
>   <xsl:template match="/values">
>     <html>
>       <body>
>         <xsl:apply-templates select="amt" />
>       </body>
>     </html>
>   </xsl:template>
> 
>   <xsl:template match="amt">
>     <p>
>       <xsl:value-of select="fk:nbr-format(.)" />
>     </p>
>   </xsl:template>
> 
>   <xsl:function name="fk:nbr-format">
>     <xsl:param name="amt" as="xs:double" />
>     <xsl:variable name="picture" select="'$,.00'" />
>       amt:              [<xsl:value-of select="$amt" />]  
>       formatted-value:  [<xsl:value-of
> select="format-number(number($amt), string($picture))" />]   
>   </xsl:function>
> </xsl:stylesheet>
> 
> Thanks!
> Angela Williams
> Software Developer
> The 401k Company, A Charles Schwab Company
> 98 San Jacinto Blvd. ~ Suite 1100 ~ Austin, TX 78701
> Office: 512.344.1547 ~ Fax: 512.397.6656
> Angela.Williams@xxxxxxxxxxxxxxxxxx    

Current Thread