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