[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] file manipulation with recursion
Subject: [xsl] file manipulation with recursion From: Holmberg Rick-ra0119 <Rick.Holmberg@xxxxxxxxxxxx> Date: Tue, 23 Jul 2002 06:10:33 -0700 |
Hi all, I am new to XML/XSLT and have a file that I need to generate a smaller version of. The file is of the format: <hierarchy> <category> <id>0</id> <level>-1</level> <name>Cat1</name> <releaseLevel>Live</releaseLevel> <date>2002-02-25 12:29:46</date> <category> <id>13abc</id> <level>1</level> <name>Cat2</name> <releaseLevel>Live</releaseLevel> <date>2002-01-07 14:02:41</date> <category> <id>X12345</id> <level>2</level> <name>Cat3</name> <releaseLevel>Live</releaseLevel> <date>2002-07-11 14:52:06</date> </category> </category> </category> </hierarchy> I need to have the output file be of the format <hierarchy> <category> <id>0</id> <name>Cat1</name> <category> <id>13abc</id> <name>Cat2</name> <category> <id>X12345</id> <name>Cat3</name> </category> </category> </category> </hierarchy> I have to use recursion because I need the close each of the category tags in the output file. I am not sure how to iterate through these nodes. I have tried several ways but have had no luck. I dont' think that I can use a for-each because the depth of the categories will change and will not be known when I am processing the file. This example shows the categories 3 deep but in actuality it will be anywhere from 4 to 10 deep. Below is the latest version of what I have been trying. Any help would be appreciated. <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <xsl:template match="hierarchy"> <New_hierarchy> <xsl:apply-templates /> </New_hierarchy> </xsl:template> <xsl:template name="category" match="category"> <xsl:param name="index" select="'1'"/> <xsl:variable name="category" select="category"/> <xsl:variable name="relLevel" select="releaseLevel"/> <xsl:if test='$relLevel="Live"'> <category> <id><xsl:value-of select="category[$index]/id"/></id> <name><xsl:value-of select="category[$index]/name"/></name> <xsl:call-template name = "category"> <xsl:with-param name="index" select="$index+1"/> </xsl:call-template> </category> </xsl:if> </xsl:template> <xsl:template match="text()|@*"> </xsl:template> </xsl:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] dependency difficulties, Soos Geza | Thread | Re: [xsl] file manipulation with re, Jeni Tennison |
RE: [xsl] transformation does happe, Andrew Welch | Date | [xsl] Documenting xsl code II, "Braumüller, Hans" |
Month |