Subject: [xsl] Re: format-date() and negative (BCE) dates From: "Martin Holmes gtxxgm-xsl-list-2@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 6 May 2014 23:49:29 -0000 |
On 6 May 2014, at 23:53, Martin Holmes gtxxgm-xsl-list-2@xxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
Consider this BCE date:
-0001-12-29
This date is in fact ambiguous. In ISO 8601, and in XSD 1.1, this is the date two years before 0001-12-29. In XSD 1.0, it is the date one year before 0001-12-29.
You're right. In my encoding, in fact, it's a Julian date. I'm not sure how to say that when passing it to the xs:date constructor. To complicate matters further, one of the things I'm trying to do is conversion between Julian and Gregorian, and it helps to do date arithmetic with the date functions, so I usually construct a date with xs:date from the Julian (which is slightly evil but still) then do the arithmetic to get a Gregorian date-range which is roughly equivalent. Most of my dates are not BCE, of course, so this oddity took me by surprise.
XPath 2.0 refers to XSD 1.0. XPath 3.0 allows the implementation to use either XSD 1.0 or XSD 1.1.
If I format this using the "AD" (Gregorian) calendar, like this:
format-date(xs:date('-0001-12-29'), '[Y0001]-[M01]-[D01]', (), 'AD', ())
I get an invalid date:
0000-12-29
There is no year zero in the Gregorian calendar. I get the same results using OS (Julian). What am I doing wrong here? The ISO calendar does have a year zero. If I include the E (Era) component in the picture string, I do get "BC", but I don't see why the correct negative-one year is being changed to an incorrect zero-year.
This is using Saxon 9.4 (the one distributed with Oxygen 15.2).
I think Saxon tries to do this according to whether or not XSD 1.1 is enabled. But it's likely to be not very thoroughly tested.
The statement that "there is no year zero in the Gregorian calendar" is inaccurate.
I don't think the papal bull which is the normative specification of the Gregorian calendar made any statement on the matter (though I admit I haven't consulted it, and my Latin is probably not good enough to make much sense of it anyway). Historians generally use the Jullian calendar when referring to events prior to the introduction of the Gregorian calendar. The only definitive statement I know of that extends the Gregoran calendar into the past is ISO 8601, and this states that there IS (or WAS) a year zero.
Cheers, Martin
Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] format-date() and negativ, Michael Kay mike@xxx | Thread | Re: [xsl] Re: format-date() and neg, Wolfgang Laun wolfga |
Re: [xquery-talk] [xsl] Re: Random , Michael Sokolov msok | Date | [no subject], Unknown |
Month |