Subject: RE: NCName, QName and colons
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 22 Feb 2010 13:15:04 -0000
|
> Michael Kay wrote:
> > "XML documents operated on by XPath must conform to the XML
> Namespaces
> > Recommendation [XML Names]."
> >
> Is this rule binding on an XSLT 2 processor as well (by
> virtue of its association with XPath 2)?
I was quoting from XPath 1.0; the rule is binding on an XSLT 1.0 processor
by virtue of section 3 of XSLT 1.0 which says "The data model used by XSLT
is the same as that used by XPath with the additions described in this
section."
>
> Source document:
>
> <:/>
>
> Stylesheet:
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="2.0">
>
> <xsl:output method="xml" omit-xml-declaration="yes"/>
>
> <xsl:template match="node()|@*">
> <xsl:copy>
> <xsl:apply-templates select="node()|@*"/>
> </xsl:copy>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Output:
>
> <:/>
It seems the XML parser built in to JDK 1.6 isn't reporting an error for
this source document. Really, no-one should be using this parser - it's
thoroughly buggy. (I keep saying that, but I keep finding that despite my
best intentions, I *do* use it, because it's so convenient.) The "real"
Xerces from Apache throws this document out with an error, albeit
not-all-that-helpful:
Error on line 1 column 2 of test.xml:
SXXP0003: Error reported by XML parser: Element type "null" must be
followed by either
attribute specifications, ">" or "/>".
>
>
> The error messages that I posted when initiating this thread
> a few weeks ago gave me a forensic clue that the above might
> work (i.e. without an error occurring).
>
> Cheers
> Justin Johansson
>
>
> <original message>
> This seems rather odd.
>
> Running an XSLT identity transform over the following source
> document with Saxon 9b produces the error underneath:
>
> <?xml version="1.0" encoding="UTF-8" ?>
>
> <:a:apple xmlns:a="foo">
> <banana/>
> </:a:apple>
>
> Error on line 3 column 25 of foo.xml:
> SXXP0003: Error reported by XML parser: The prefix ":a" for
> element ":a:apple" is not bound.TransformerException:
> net.sf.saxon.trans.XPathException:
> org.xml.sax.SAXParseException: The prefix ":a" for element
> ":a:apple" is not bound.
>
> Obviously the source document is not valid XML but the error
> message is confusing.
Direct your complaints to the vendor of the XML parser you are using!
Apache Xerces again reports
"Element type "null" must be followed by either
attribute specifications, ">" or "/>"
for this one. In this case the Sun parser's error message is probably
better, though neither is wonderful.
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
|