xsl-list
[Top] [All Lists]

RE: [xsl] NCName, QName and colons

2010-02-22 07:15:29
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 


--~------------------------------------------------------------------
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>
--~--