- From: <bugzilla@wiggum.w3.org>
- Date: Tue, 26 Jul 2005 13:54:49 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1817 Summary: [XSLT 2.0] Incorrect example for xsl:namespace Product: XPath / XQuery / XSLT Version: Last Call drafts Platform: PC OS/Version: Windows XP Status: NEW Severity: normal Priority: P2 Component: XSLT 2.0 AssignedTo: mike@saxonica.com ReportedBy: mike@saxonica.com QAContact: public-qt-comments@w3.org In section 11.7, xsl:namespace, we find the example: <quote> Example: Conflicting Namespace Prefixes Given the instruction: <p:item xmlns:p="p.uri"><xsl:namespace name="p">q.uri</xsl:namespace></p:item> a possible serialization of the result tree is: <ns0:item xmlns:ns0="p.uri" xmlns:p="q.uri"/> The processor must invent a namespace prefix for the URI p.uri; it cannot use the prefix p because that prefix has been explicitly associated with a different URI. </quote> In fact, the processor is not allowed to invent a prefix for p.uri: the rules for literal result elements say that namespace nodes must be copied from the stylesheet. So there is a conflict here, which should result in error XTDE0430. Namespace prefixes can be invented only in the case of namespace nodes generated by namespace fixup. So a better example would be: <xsl:element name="p:item" xmlns:p="p.uri"> <xsl:namespace name="p">q.uri</xsl:namespace> </xsl:element> Here the processor can, and must, choose a prefix for p.uri that does not conflict with the binding of p to q.uri. Michael Kay (this originated in a Saxon bug report from Colin Adams, who pointed out that Saxon was giving different results for this example than the result stated in the spec.)
Received on Tuesday, 26 July 2005 13:55:03 UTC