Subject: RE: [xsl] Copy idiom and overriding namespaces: trying to be smart, finding approaches From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 26 Jul 2006 22:43:57 +0100 |
> A copy of my last attempt, leaving out > comment nodes and processing instructions: > > <xsl:template match="@*" > > <xsl:copy /> > </xsl:template> > > <xsl:template match="*" > > <xsl:element name="{local-name()}" namespace="{$target-namespace}"> > <xsl:apply-templates select="@* | node()" /> > </xsl:element> > </xsl:template> > Yes, that's a good solution. It doesn't copy any namespaces that aren't actually used, but that's OK if your source document doesn't use QNames-in-content (such as xsi:type="xs:integer"). And it doesn't change the namespace of any attributes. > In short, I could conclude that it is not possible to make a > template only for namespace nodes and change the result tree > namespace when you encounter an input namespace. You can read namespaces nodes using the namespace axis, and in 2.0 you can create namespace nodes using the xsl:namespace instruction; but none of this changes the name of an element or attribute. Element and attribute names consist of a namespace URI plus local name, and to change the namespace URI of the node you need to use the namespace attribute of xsl:element or xsl:attribute. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Copy idiom and overriding, Abel Braaksma Online | Thread | Re: [xsl] Copy idiom and overriding, Abel Braaksma Online |
RE: Re: [xsl] forcing non breaking , cknell | Date | Re: [xsl] Copy idiom and overriding, Abel Braaksma Online |
Month |