Stephane --
As you can see from my latest emails with David, I have come full circle
on this. I believe the correct answers are:
0.812
and
81.23%
I'm now saying that stylesheets are -not- locale-specific based on a
more careful reading of the Recommendation and Erratum E10, as pointed
out by David. When the xsl:decimal-format element is missing, the
defaults from the recommendation are used, not the java locale-specific
defaults.
I've checked in a fix to CVS that rectifies this problem.
Thanks for reporting it.
Gary
Gary L Peskin wrote:
>
> > Stephane Bailliez wrote:
> >
> > Hi,
> >
> > It looks like there is some kind of regression w/ format-number /
> > decimal-format, but I'm unsure if this is a regression or a stricter
> > conformance.
> > Thinking about it, it might be normal...
> >
> > <xsl:format-number(0.812345, '0.000')/>
> > gives 0,812 w/ xalan 1.2.2
> > gives 0001. w/ xalan cvs
>
> I believe that this is correct. I'm assuming from your later statement
> ("It works well if I define <xsl:decimal-format ...>") that you don't
> have an xsl:decimal-format element present when you get the 0001. I'm
> also assuming that you're in a locale where the "." is the grouping
> separator.
>
> The first argument to format-number is an XPath Number. In an XPath
> Number, the decimal separator is always a ".". It is not locale
> dependent.
>
> So, the pattern basically says to yield a whole number with a "."
> grouping separator. The number 0.812345 is rounded to the nearest
> whole number, which is 1, and this is what you're getting. I'm not sure
> why you're getting the trailing "." though. It shouldn't be there.
>
> >
> > <xsl:format-number(0.812345, '0.00%')/>
> > gives 81,23% w/ xalan 1.2.2
> > gives 0081.% w/ xalan cvs
> >
>
> The "%" sign in the pattern format says to multiply the number by 100.
> This is what is done here. 0.812345 * 100 = 81.2345. This is rounded
> to the nearest whole number and is then output as 81%. Again, I'm not
> sure why you're getting the "." between the 1 and the % but I'm going to
> look into that.
>
> > I can enter this as a bug if this is a real regression, just tell me.
>
> So, I'd say that Xalan CVS is working (almost) correctly and the 1.2.2
> was in error.
>
> I've tried to duplicate this on the current CVS but I'm getting a
> "Malformed format string" exception so I'm looking into that and into
> your trailing decimal point.
>
> I'll keep you posted.
>
> Gary