Subject: Re: [xsl] Process same template 2X? From: Geoff Hankerson <ghank@xxxxxxxxxxx> Date: Mon, 21 Oct 2002 07:00:57 -0500 |
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 -> |
---|---|---|
Re: [xsl] & in attribute value , David Carlisle | Thread | Re: [xsl] Process same template 2X?, Geoff Hankerson |
Re: [xsl] how to make default actio, Vasu Chakkera | Date | RE: [xsl] optional children, Andrew Welch |
Month |