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