xsl-list
[Top] [All Lists]

RE: [xsl] Different results of format-date() when using empty seq. or omitting args for lang/cal/country args

2006-10-02 07:04:49
While trying to output a value as ISO calendar using a 
default language, I came across a little niche in the xslt 
specification that I find hard to interpret right. My problem 
is this: when I want to output as ISO calendar, I have to 
provide the last three arguments for format-date(). 
The spec says that I can use the empty sequence to use for 
the default value, which value is implementation-defined. 
Fair enough. But when I use the empty sequence for language, 
the processor defaults to language X and outputs with 
[Language: en] somedate, saying in fact that it does not 
support the default language requested! Am I missing 
something, or is this is a processor dependent bug?

Saxon is taking the default from the Java locale, and then falling back to
English if you haven't installed a date localisation for that locale. It
would probably be more sensible to collapse these two steps, which would
mean you didn't get the [Language: en] in the output.

The current behaviour of Saxon is conformant with the spec, but there are
other conformant behaviours that might be more user-friendly.

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


My hunch is that the processor takes the current language 
setting from system properties, which is, likely, to vary 
from system to system (in my case 'nl'). What I expected it 
to, is to default to a fixed language code, namely 'en' (or 
any other for that matter). That way, the following two 
statements would be equal:

Ex 1) format-date(current-date(), '[D1]/[Y1]') Ex 2) 
format-date(current-date(), '[D1]/[Y1]', (), (), ())

Output ex. 1) 10/2006
Output ex. 2) [Language: en] 10/2006

In some way, this feels like violating the specs, but I 
cannot be sure of that. The specs say: "When any of these 
arguments is omitted or is an empty sequence, an 
implementation-defined default value is used."

You can only omit all three last arguments at once. I expect 
the "default value" to be the same all the time, instead 
being different for 'omitting' and 'empty sequence'.

I would like to use the following statement (3), for logging 
my stuff to some system. Unfortunately I have to resort 
statement (4), to get rid of the [Language: en] part in the 
output. But specifying the language does not feel right, 
because I want the default to be used, to be sure the 
processor can support the default (but it doesn't).

Ex 3) format-date(current-date(), '[D1] [MNn] [Y1], (), 
'ISO', ()) Ex 4) format-date(current-date(), '[D1] [MNn] 
[Y1], 'en', 'ISO', ())

Output ex 3) [Language: en]2 October 2006 Output ex 4) 2 October 2006

Does anybody has some experience with this with other processors? 
Anybody any thoughts on this or on how I should interpret the 
particular part of the specs? Is the spec indeed open to 
implement for different outputs for (1) and (2), or is that 
an error in the processor?

I tested with Saxon 8.7.1

Cheers,
Abel Braaksma


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--