xsl-list
[Top] [All Lists]

Re: Element name as attribute value

2005-08-11 05:24:28
Shailesh napisał(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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>