Subject: [xsl] How to move the namespaces onto the root element when there is a namespace prefix that is bound to different namespaces? From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Sun, 13 Jan 2013 19:29:05 +0000 |
Hi Folks, I found this wonderful code [1] from Michael Kay to move the namespace declarations up onto the root element: <xsl:template match="/*"> <xsl:copy> <xsl:copy-of select="@*, //namespace::*, child::node()"/> </xsl:copy> </xsl:template> That works great, provided the XML document doesn't have the same namespace prefix bound to different namespaces. For example, it fails on this XML document: <Test xmlns="A"> <ns1:element xmlns:ns1="B">Hello</ns1:element> <ns1:element xmlns:ns1="C">C</ns1:element> </Test> Notice that the namespace prefix, ns1, is bound to two different namespaces. Applying the XSLT program to the XML document results in this error: Cannot create two namespace nodes with the same prefix mapped to different URIs (prefix=ns1, URI=C, URI=B) How do I move the namespace declarations up onto the root element, while taking in account that the XML document may contain a namespace prefix that is bound to different namespaces? /Roger [1] http://www.mhonarc.org/archive/html/xsl-list/2009-10/msg00153.html
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[no subject], Unknown | Thread | Re: [xsl] How to move the namespace, Dimitre Novatchev |
[no subject], Unknown | Date | Re: [xsl] How to move the namespace, Dimitre Novatchev |
Month |