Subject: Re: [xsl] XSLT 3.0 and XML Schema version From: Michael Kay <mike@xxxxxxxxxxxx> Date: Wed, 20 Nov 2013 11:16:00 +0000 |
On 20 Nov 2013, at 10:16, Sean B. Durkin <sean@xxxxxxxxxxxxxxxxx> wrote: > If I feed the following stylesheet into an XSLT 3 processor, will the output be implementation dependant? No, it will be implementation-defined ;-) The difference is that when things are implementation-defined, a conformant processor has to document what it does. Cross-dependencies between versions of specs are something that's typically fixed only at a late stage of spec publication. However, it's very likely that XSLT 3.0 will specify XPath 3.0, and XPath 3.0 is now a Proposed Rec and therefore very unlikely to change, and XPath 3.0 says * It is implementation-defined whether the type system is based on [XML Schema 1.0] or [XML Schema 1.1]. Date/time arithmetic is of course defined by XPath not by XSLT. > > If the XML processor under the XSLT processor respects XSD 1.0, then, by my calculations, the output should be ... > > <aYearLater>0001-02-29</aYearLater> > > ... but if XSD 1.1, then it should be ... > > <aYearLater>0000-03-01</aYearLater> > > On a side note, if you change the xsl:stylesheet/@version to 2.0 and feed the stylesheet to Saxon HE 9.5, then you get output ... > > <aYearLater>0001-03-01</aYearLater> > Saxon has a configuration-level switch allowing you to choose between XSD 1.0 and XSD 1.1 support. This is orthogonal to the choice of XSLT or XPath version. If you choose XSD 1.1, then I think you will get 0000-03-01. (For those unfamiliar with the detail, XSD 1.1 changed the definition of non-positive year numbers to align with ISO 8601, which clarified that in the "proleptic Gregorian calendar" there is a year 0. This differs from the convention used by historians, where the year before 1AD is 1BC; but historians do not generally use the proleptic Gregorian calendar anyway.) One thing the specs don't really clarify is what format-date() should do with negative years when the calendar is "AD". I think the right answer is probably that -0001-01-01 should be output as 1 Jan 2BC. Michael Kay Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Fwd: [xsl] XSLT 3.0 and XML Schema , Sean B. Durkin | Thread | Re: [xsl] XSLT 3.0 and XML Schema v, Sean B. Durkin |
[xsl] XSLT streaming: the processor, Costello, Roger L. | Date | Re: [xsl] XSLT 3.0 and XML Schema v, Sean B. Durkin |
Month |