Subject: RE: [xsl] Process same template 2X? From: Nirmala R <nirmala.r@xxxxxxxxxx> Date: Sat, 19 Oct 2002 10:24:47 +0530 |
Hi, I assume that you want to put all the category with level2 under level1 as subcat. You can have a stylesheet like this: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="xml"/> <xsl:template match="/cats"> <cats> <xsl:apply-templates select="category"/> </cats> </xsl:template> <xsl:template match="category"> <xsl:if test="@level=1"> <category> <xsl:attribute name="name"> <xsl:value-of select="@name"/> </xsl:attribute> <xsl:for-each select="following::category"> <xsl:if test="@level=2"> <subcat> <xsl:attribute name="name"> <xsl:value-of select="@name"/> </xsl:attribute> </subcat> </xsl:if> </xsl:for-each> </category> </xsl:if> </xsl:template> </xsl:stylesheet> This will take care of the case excluding a sibling with the category level as 1 also inaddition to your requirement. Hope I answered your query, Nirmala -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Geoff Hankerson Sent: Saturday, October 19, 2002 1:22 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Process same template 2X? I want to transform this xml : <?xml version="1.0" encoding="UTF-8"?> <cats> <category level="1" name="Business Law"/> <category level="2" name="Corporations" parent="Business Law"> </category> <category level="2" name="Nonprofit Corporations*" parent="Business Law"> </category> </cats> Into this xml: <?xml version="1.0" encoding="UTF-8"?> <cats> <category name="Business Law"/> <subcat name="Corporations"/> <subcat name="Nonprofit Corporations*"> </category> </cats> It seems it should be simple but is giving me fits. Current stylesheet (stinks) is this: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="xml"/> <xsl:template match="/cats"> <cats> <xsl:apply-templates select="category"/> </cats> </xsl:template> <xsl:template match="category"> <xsl:if test="@level=1"> <category> <xsl:attribute name="name"> <xsl:value-of select="@name"/> </xsl:attribute> <subcat> <xsl:attribute name="name"> <xsl:value-of select="following-sibling::category/@name"/> </xsl:attribute> </subcat> </category> </xsl:if> </xsl:template> </xsl:stylesheet> Current stlyesheet returns this: <?xml version="1.0" encoding="UTF-8"?> <cats> <category name="Business Law"> <subcat name="Corporations"/> </category> </cats> the 3rd category node in the orginal xml does not get processed how can I assure all fllowing category nodes get processed? XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Process same template 2X?, Geoff Hankerson | Thread | [xsl] & in attribute value temp, Guy McArthur |
Re: [xsl] Access to unparsed entiti, Jeni Tennison | Date | [xsl] & in attribute value temp, Guy McArthur |
Month |