Subject: RE: [xsl] Iterating recursivly on a node changing the element names From: "Scott Trenda" <Scott.Trenda@xxxxxxxx> Date: Wed, 21 Nov 2007 08:25:32 -0600 |
Alternately: <xsl:element name="{local-name()}" namespace="yourNamespaceURI"> ~ Scott -----Original Message----- From: Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx] Sent: Wednesday, November 21, 2007 4:18 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Iterating recursivly on a node changing the element names On 21/11/2007, ML mail <mlnospam@xxxxxxxxx> wrote: > Dear list, > > I would like to modify the name of my elements of a > certain node to > make it use a new namespace so for that I somehow > need an iteration > process which goes through a specific node and adds a > prefix to all of my > elements. Let's say I have the following: > > <start attr="myattr"> > <two> > <three>3</three> > <four>4</four> > </two> > </start> > > I need to make it look like this after processing: > > <nsprefix:start attr="myattr"> > <nsprefix:two> > <nsprefix:three>3</nsprefix:three> > <nsprefix:four>4</nsprefix:four> > </nsprefix:two> > </nsprefix:start> > > > I started creating a template for that and defining > all the nodes under > the start node but this sounds quite stupid because > if there are many > different possibilites it makes a whole lot of checks > to build. So I > was thinking it's much easier to just detect the > start element and then > iterate through all of it's child elements (in my > case: two, three four) > and add the prefix to these elements. Unfortunately I > didn't manage to > do that. Can someone provide me help on how to > acheive that ? Use the standard identity template with a specific template to put <start> and all of it's descendants into the namespace: <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="*[ancestor-or-self::start]"> <xsl:element name="nsprefix:{local-name()}"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> ...make sure "nsprefix" is mapped somewhere. cheers -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Iterating recursivly on a, David Carlisle | Thread | Re: [xsl] Iterating recursivly on a, Florent Georges |
Re: [xsl] Iterating recursivly on a, Andrew Welch | Date | Re: [xsl] Iterating recursivly on a, G. Ken Holman |
Month |