RE: [xsl] Working with xs:date and xs:gYearMonth

Subject: RE: [xsl] Working with xs:date and xs:gYearMonth
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 23 Jun 2004 15:00:33 +0100
>     Michael> <xsl:variable name="first-of-previous-month"
>     Michael> select="xs:date('0000-01-01') + ($previous-month *
>     Michael> $one-month)" as="xs:date"/>
> 
> Well, Saxon 8.0 doesn't allow this (quite right too - there never was
> a year zero!).

Actually, this is a minor disaster in XML Schema: in the proleptic Gregorian
calendar as defined by ISO 8601:2000 the year before 0001 is indeed 0000,
but in XML Schema it is -0001.

The fact that there was never a year zero is rather irrelevant; there was
never a year -1 either.  The numbers we use were assigned to these years
posthumously!

Saxon's date arithmetic on BC dates is probably unreliable because of these
problems, it's not something that is very well tested. It would be safer to
use a later date as a baseline.

> I tried substituting -0001-01-01, which saxon doesn't 
> complain of, but 
> date='{first-of-previous-month}'"
> is coming out as date=''.

Missing "$" perhaps?

Michael Kay


Current Thread