On 20 Nov 2013, at 10:16, Sean B. Durkin
<sean(_at_)seanbdurkin(_dot_)id(_dot_)au> 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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--