xsl-list
[Top] [All Lists]

Re: Working with xs:date and xs:gYearMonth

2004-06-23 07:18:12
"Michael" == Michael Kay <mhk(_at_)mhk(_dot_)me(_dot_)uk> writes:

    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!).

    Michael> Actually, this is a minor disaster in XML Schema: in the

As opposed to the major disaster that is XML Schema itself?

    Michael> proleptic Gregorian calendar as defined by ISO 8601:2000
    Michael> the year before 0001 is indeed 0000, but in XML Schema it
    Michael> is -0001.

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

which ghost did the assigning then?
Post-factum, perhaps.

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

I'll bear it in mind.

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

    Michael> Missing "$" perhaps?

Yes.
I've got it all working now, but using 1st December 2 BCE (well -0002-12-01) as 
a
baseline (weird - but that's what works, for now anyway.).
-- 
Colin Paul Adams
Preston Lancashire