I've fixed a few bugs in my XSLT 2.0 RELAX NG Grammar.
A few months ago, I wrote about validating XSLT 2.0 with RELAX NG. I provided a RELAX NG Grammar that validates both XSLT 1.0 and XSLT 2.0 by using the externalRef feature of RELAX NG.
That grammar has served me well in the intervening months, but a few bugs have been reported:
-
#all isn't allowed in exclude-result-prefixes.
-
Neither #all nor #default is allowed in mode.
-
The separator attribute isn't allowed on <xsl:value-of>.
-
Content isn't allowed in <xsl:value-of> (as an alternative to select).
-
collation isn't allowed on <xsl:sort>.
I think I've fixed those bugs in xslt20.rnc which works with the (unmodified) xslt10.rnc and xslt.rnc.
Please report any bugs that you find. Share and enjoy!
Comments:
Thanks!
Interesting. Have you considered writing a custom type library that can properly validate expressions, sequences, and patterns? You could probably do this by calling Saxon's XPath parser. I'm tempted to do this with Jaxen, but that only supports XPath 1.0.
Yes. Next time I crack open the Saxon sources (I've got to update rdftwig it turns out), I'm going to poke around and see how hard it would be to do that.
Truth is, though, that I mostly use the XSLT 2.0 stylesheets with nxml-mode and I don't plan to write a custom type library in Emacs any time soon. :-)
I just noticed that this schema doesn't allow some of the recent additions that have been made by the Working Group. I'll try to update it again sometime soon.