[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Process same template 2X?
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: 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
|
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
|