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