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
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
is coming out as date=''.
Missing "$" perhaps?