Subject: RE: Transforming node to different location in output From: Kay Michael <Michael.Kay@xxxxxxx> Date: Wed, 19 Apr 2000 18:14:18 +0100 |
> Can anyone help me figure out how to transform one > node to a different location in the output > Example: > Input: > <?xml version="1.0"?> > <document> > <tag1> > <element1>data</element1> > <element2>data</element2> > </tag1> > <tag2> > <element1>data</element1> > <element2>data</element2> > </tag2> > <tag3> > <element1>data</element1> > <element2>data</element2> > </tag3> > </document> > > Output: > <?xml > > The output that I would like to get might be something > like this: > > <?xml version="1.0" encoding="utf-8"?> > <document> > <tag2> > <element1>data</element1> > <element2>data</element2> > </tag2> > <tag3> > <element1>data</element1> > <element2>data</element2> > <newtag1> > <newelement1>data</newelement1> > <newelement2>data</newelement2> > </newtag1> > </tag3> > </document> > Hard to generalise from one example. You could achieve this particular transformation by: <xsl:template match="document"> <xsl:copy> <xsl:copy-of select="tag2"/> <xsl:copy select="tag3"> <xsl:copy-of select="tag3/*"/> <xsl:apply-templates select="tag1"/> </xsl:copy> </xsl:copy> </xsl:template> <xsl:template match="tag1"> <newtag1><xsl:apply-templates/></newtag1> </xsl:template> <xsl:template match="element1"> <newelement1><xsl:apply-templates/></newelement1> </xsl:template> general principle: xsl:copy-of for a deep copy, xsl:copy for a shallow copy, xsl:apply-templates for a transformation. Mike Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Transforming node to different loca, Jonathan Schroeder | Thread | RE: Transforming node to different , Jonathan Schroeder |
RE: Accessing 2 xml files in xsl, Charlie Cox | Date | RE: Accessing 2 xml files in xsl, Selva, Francis |
Month |