[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Rename element
Hi, I am not getting the script to scriptin. My input xml is: <sample xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd"> <sample1> <p>ABCDEFGHIJK</p> <script lang="enu"/> <script lang ="enu1"/> <p>123456</p> <p>789123</p> </sample1> </sample> Required output as: <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd"> <sample1> <p>ABCDEFGHIJK</p> <scriptin lang="enu"/> <scriptin lang ="enu1"/> <p>123456</p> <p>789123</p> </sample1> </test> And the xsl for the same is: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="no"/> <xsl:variable name="alink" select="//alink"/> <xsl:template match="/"> <test> <!-- to get path value as filename path--> <xsl:attribute name="path"> <xsl:value-of select="$alink"/> <xsl:text>.htm</xsl:text> </xsl:attribute> <xsl:attribute name="xsi:noNamespaceSchemaLocation"><xsl:text>test.xsd</xsl:text></xsl:attr ibute> <xsl:apply-templates/> </fileloc> </xsl:template> <!-- to change "script" to "scriptin"--> <xsl:template match="*[not(self::script)]"> <xsl:copy> <xsl:copy-of select="@*"/> </xsl:copy> <xsl:apply-templates/> </xsl:template> <xsl:template match="sample1"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> Here I am not getting script to scriptin, rest of the content i am getting as it required. Thanks, Shailesh -----Original Message----- From: Ragulf Pickaxe [mailto:ragulf.pickaxe@xxxxxxxxx] Sent: Friday, November 04, 2005 6:53 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: Rename element Hmmmmm. I can see from another thread, DC provided you with a solution for the same input. Note that my solution will not work, if you do these together, at DC's solution simply makes a deep copy of the XML in question. You will need something like (use it together with the template I provided in the last email): <xsl:template match="sample"> <test> <!--<xsl:copy-of select="@*|node()"/>--> <xsl:apply-templates/> </test> </xsl:template> <xsl:template match="*[not(self::script)]"/> <!-- Makes a shallow copy of the element in question --> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> <!-- Applies templates to below elements --> </xsl:copy> </xsl:template> Regards, Ragulf Pickaxe :-)
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|