This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XSL : how to turn <name> into <data elem="name">
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] XSL : how to turn <name> into <data elem="name">
- From: "Sean Power" <spower at ariba dot com>
- Date: Wed, 7 Feb 2001 20:00:11 -0500
- Reply-To: xsl-list at lists dot mulberrytech dot com
>I am a beginner in XSL. I would like to convert XML document into another
>XML document using XSL. The only transformation is to do
><name>value<name/> INTO <data elem="name">value</data>
>for all tags in incoming XML. How can I do this ?
Try this:
<xsl:template match="*">
<xsl:element name="data">
<xsl:attribute name="elem"><xsl:value-of
select="name(.)"/></xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
This will work if none of the XML is nested. I am only presuming this from
your example because your example doesn't show any child elements. However,
if you do have elements inside elements -
e.g. <name>
<my_name>Me</my_name>
</name>
Then do this:
<xsl:template match="*">
<xsl:element name="data">
<xsl:attribute name="elem"><xsl:value-of
select="name(.)"/></xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
This will run through the template match for the element's children as well,
e.g:
<name>
<my_name>value</my_name>
<name/>
will become
<data elem="name">
<data elem="my_name">value</data>
</data>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list