(I know my answer is a bit late, sorry about that, but I couldn't resist)
Justin Johansson wrote:
> <:a:apple xmlns:a="foo">
> Obviously the source document is not valid XML but the error message
is confusing.
Not quite: the source document is valid XML, see
http://www.w3.org/TR/xml/#NT-Name. However, it is not valid XML+NS, see
http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-NCName.
I was under the impression that XSLT could only process XML conforming
to the Namespaces in XML Recommendation, but I can't find anything in
the XSLT 1.0 specification that strictly prohibits the input to have to
be classic (i.e., non-namespace) XML. It requires a source tree, but how
the source tree is build from an actual source and what its
specifications are, if any, I can't find it.
XSLT 2.0 seems to deliberately allow any input, as long as it conforms
to, or is parsed into the XDM data model. This indirectly prohibits XML
Name, and only allows valid QNames to be used:
http://www.w3.org/TR/xpath-datamodel/#dm-node-name.
Kind regards,
Abel Braaksma
PS: it seems that at the time of XSLT 1.0, an effort was started to
create an XML Query Data Model
(http://www.w3.org/TR/2001/WD-query-datamodel-20010215/#elemNode). This,
too, only allowed QNames. However, it never made it to a Recommendation
and work was not in sync with work on the XSLT 1.0 specification
(unverified).