I'm a bit confused with backwards/forwards compatibility
between XSLT 1.0/2.0.
Here's what I've concluded:
An XSLT 2.0 processor running in backwards compatibility mode(due to
xsl:version=1.0) accepts an illegal XSLT 1.0 stylesheet, as
long as it is
valid XSLT 2.0(say, an if statement was in an expression).
Hence, one can
write an "1.0" stylesheet which works just fine with an XSLT
2.0 processor,
but is flagged as invalid at a static stage with an XSLT 1.0
processor.
I think this is right, because Saxon confirms it, and it is
how I interpret
the specifications.
Yes - sounds correct.
What makes me wonder is because I find it hard to to motivate
this behavior or
see it in a practical perspective.
From one perspective, I think I find it annoying, because one
can't "simulate"
an XSLT 1.0 processor with the xsl:version attribute, and
hence be guaranteed
a stylesheet works with a "real" 1.0 processor, without
manually ensuring it
will. But on the other hand, I can't tell what negative
aspects it would lead
to(of course, I could already have mentioned it..).
Perhaps someone can clear my confusion and provide some background?
It's to ease the transition from 1.0 to 2.0 and is really useful. You
can take your 1.0 stylesheet and pick-and-choose the features from 2.0
that you need and it all just works. It's fantastic, really.
If you want to guarantee a 1.0 stylesheet works with a 1.0 processor
then use a 1.0 processor to test it, not a 2.0 processor (and use the
exact one you want to guatantee it for, I would say).
cheers
andrew
--~------------------------------------------------------------------
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>
--~--