creat xml element value to attribute with same tag name

taubcurlbutle

New Member
This is my simple XML file:-\[code\]<products> <value> <value> <region_timezone> <value>1</value> </region_timezone> <registrationstatus> <value>2</value> </registrationstatus> <eventstatus> <value>2</value> </eventstatus> <dist_activity> <value>5</value> <value>10068</value> <value>10070</value> </dist_activity> <reg_str_dt> <value>2013-01-14 20:35:00</value> </reg_str_dt> <reg_end_dt> <value>2013-01-14 20:35:00</value> </reg_end_dt> <product_id>1</product_id> <tab_id>351</tab_id> <tab_name>test1</tab_name> </value> </value> <value> <value> <region_timezone> <value>1</value> </region_timezone> <registrationstatus> <value>2</value> </registrationstatus> <eventstatus> <value>2</value> </eventstatus> <dist_activity> <value>5</value> <value>10069</value> <value>10070</value> </dist_activity> <reg_str_dt> <value>2013-02-14 20:39:00</value> </reg_str_dt> <reg_end_dt> <value>2013-02-14 20:39:00</value> </reg_end_dt> <product_id>2</product_id> <tab_id>352</tab_id> <tab_name>test2</tab_name> </value> </value></products>\[/code\]i try this xslt:-\[code\]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="value"> <xsl:apply-templates /> </xsl:template> <xsl:template match="products/value/value"> <product_id value="http://stackoverflow.com/questions/15472712/{product_id}"> <tab_id value="http://stackoverflow.com/questions/15472712/{tab_id}"> <tab_name value="http://stackoverflow.com/questions/15472712/{tab_name}" /> <xsl:apply-templates select="node()" /> </tab_id> </product_id> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="self::*[value[not(*)]]" mode="values" /> <xsl:apply-templates select="@* | node()" /> </xsl:copy> </xsl:template> <xsl:template match="value[not(*)]" /> <xsl:template match="*" mode="values"> <xsl:attribute name="value"> <xsl:apply-templates select="value[not(*)]" mode="values"/> </xsl:attribute> </xsl:template> <xsl:template match="value" mode="values"> <xsl:value-of select="concat(., ',')"/> </xsl:template> <xsl:template match="value[last()]" mode="values"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="product_id | tab_id | tab_name" /></xsl:stylesheet>\[/code\]with use of this xslt:- i done o/p something like this type:-\[code\]<products> <product_id value="http://stackoverflow.com/questions/15472712/1"> <tab_id value="http://stackoverflow.com/questions/15472712/351"> <tab_name value="http://stackoverflow.com/questions/15472712/test1" /> <region_timezone value="http://stackoverflow.com/questions/15472712/1" /> <registrationstatus value="http://stackoverflow.com/questions/15472712/2" /> <eventstatus value="http://stackoverflow.com/questions/15472712/2" /> <dist_activity value="http://stackoverflow.com/questions/15472712/5,10068,10070" /> <reg_str_dt value="http://stackoverflow.com/questions/15472712/2013-01-14 20:35:00" /> <reg_end_dt value="http://stackoverflow.com/questions/15472712/2013-01-14 20:35:00" /> </tab_id> </product_id> <product_id value="http://stackoverflow.com/questions/15472712/2"> <tab_id value="http://stackoverflow.com/questions/15472712/352"> <tab_name value="http://stackoverflow.com/questions/15472712/test2" /> <region_timezone value="http://stackoverflow.com/questions/15472712/1" /> <registrationstatus value="http://stackoverflow.com/questions/15472712/2" /> <eventstatus value="http://stackoverflow.com/questions/15472712/2" /> <dist_activity value="http://stackoverflow.com/questions/15472712/5,10069,10070" /> <reg_str_dt value="http://stackoverflow.com/questions/15472712/2013-02-14 20:39:00" /> <reg_end_dt value="http://stackoverflow.com/questions/15472712/2013-02-14 20:39:00" /> </tab_id> </product_id></products>\[/code\]but i need this type of o/p:-\[code\]<products> <product_id value="http://stackoverflow.com/questions/15472712/1"> <tab_id value="http://stackoverflow.com/questions/15472712/351"> <tab_name value="http://stackoverflow.com/questions/15472712/test1" /> <region_timezone value="http://stackoverflow.com/questions/15472712/1" /> <registrationstatus value="http://stackoverflow.com/questions/15472712/2" /> <eventstatus value="http://stackoverflow.com/questions/15472712/2" /> <dist_activity value="http://stackoverflow.com/questions/15472712/5" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10068" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10070" /> <reg_str_dt value="http://stackoverflow.com/questions/15472712/2013-01-14 20:35:00" /> <reg_end_dt value="http://stackoverflow.com/questions/15472712/2013-01-14 20:35:00" /> </tab_id> </product_id> <product_id value="http://stackoverflow.com/questions/15472712/2"> <tab_id value="http://stackoverflow.com/questions/15472712/352"> <tab_name value="http://stackoverflow.com/questions/15472712/test2" /> <region_timezone value="http://stackoverflow.com/questions/15472712/1" /> <registrationstatus value="http://stackoverflow.com/questions/15472712/2" /> <eventstatus value="http://stackoverflow.com/questions/15472712/2" /> <dist_activity value="http://stackoverflow.com/questions/15472712/5" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10069" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10070" /> <reg_str_dt value="http://stackoverflow.com/questions/15472712/2013-02-14 20:39:00" /> <reg_end_dt value="http://stackoverflow.com/questions/15472712/2013-02-14 20:39:00" /> </tab_id> </product_id></products>\[/code\]here i dont need to comma-separate(,) in my current o/p. i want to separate this element attiribute value as above xml output like:- \[code\] <dist_activity value="http://stackoverflow.com/questions/15472712/5" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10069" /> <dist_activity value="http://stackoverflow.com/questions/15472712/10070" />\[/code\]please help me out of this...
if its possible...
thanks...
 
Back
Top