RE: [xsl] Element name as attribute value

Subject: RE: [xsl] Element name as attribute value
From: "Shailesh" <shailesh@xxxxxxxxxxxx>
Date: Thu, 11 Aug 2005 17:56:46 +0530
Thanks a lot! It's worked!

-----Original Message-----
From: Marcin Mi3kowski [mailto:milek_pl@xxxxx]
Sent: Thursday, August 11, 2005 5:54 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Element name as attribute value

Shailesh napisa3(a):
> Hi All,
>
> I have to transform element name say "comments" as attribute value to
> "<tsta name="comments">". Can it be possible using XSLT 2.0.
>
> Xml contains:
>
> <?xml version=1.0?>
> <test>
> <text:p text:trans_attr="trans">
> Sample para. This needs to be translated.
> <comments>This is not translated</comments> </text:p> </test>

This XML is not valid - you're missing quotes around the XML version
("1.0") and the namespace declaration. But the thing you're talking about is
the easiest transformation I could think of, so it's possible also in XSLT
1.0.

I corrected it thus:

<?xml version="1.0"?>
<test xmlns:text="http://www.text.com"; > <text:p text:trans_attr="trans">
Sample para. This needs to be translated.
<comments>This is not translated</comments> </text:p> </test>

using a stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">

<xsl:output method="xml" indent="yes"/>

<xsl:template match="@*|node()">
	  <xsl:copy>
		<xsl:apply-templates select="@*|node()"/>
	</xsl:copy>
</xsl:template>


<xsl:template match="comments">
<xsl:element name="tsta">
<xsl:attribute name="name">
<xsl:text>comments</xsl:text>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>

</xsl:stylesheet>

you would get:

<?xml version="1.0" encoding="UTF-16"?>
<test xmlns:text="http://www.text.com";>
<text:p text:trans_attr="trans">
Sample para. This needs to be translated.
<tsta name="comments">This is not translated</tsta> </text:p> </test>

which is almost what you wanted, but with a correct namespace declaration.

Best,
	Marcin

Current Thread