Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - >Thread Next - Re: [xsl] using parameters to identify element levels [xsl] using parameters to identify element levelsTo: Date: 12/4/2006 3:42:00 PM I'm 99% done with a project and this is the last remaining item. given the following source: <item ItemID="1" ParentID="0">item1</item> <item ItemID="2" ParentID="0">item2</item> <item ItemID="3" ParentID="2">Item3</item> <item ItemID="4" ParentID="3">Item4</item> <item ItemID="5" ParentID="2">item5</item> <item ItemID="6" ParentID="0">item6</item> (note that the data is properly sequenced; reordering is not necessary) I'd like the following output: <itemL1 ItemID="1" ParentID="0">item1</itemL1> <itemL1 ItemID="2" ParentID="0">item2</itemL1> <itemL2 ItemID="3" ParentID="2">Item3</itemL2> <itemL3 ItemID="4" ParentID="3">Item4</itemL3> <itemL2 ItemID="5" ParentID="2">item5</itemL2> <itemL1 ItemID="6" ParentID="0">item6</itemL1> The resulting elements do not need to be nested. What I've been attempting to do is the following (which isn't working) <xsl:template match="item"> <!-- set initial parameter values --> <xsl:param name="ItemIDL0">0</xsl:param> <xsl:param name="ItemIDL1">9999</xsl:param> <xsl:param name="ItemIDL2">9999</xsl:param> <xsl:param name="ItemIDL3">9999</xsl:param> <xsl:param name="ItemIDL4">9999</xsl:param> <xsl:choose> <!-- match L1 --> <xsl:when test="@ParentID = $ItemIDL0"> <xsl:call-template name="ItemL1"/> </xsl:when> <!-- match L2 --> <xsl:when test="@ParentID = $ItemIDL1"> <xsl:call-template name="ItemL2"/> </xsl:when> <!-- match L3 --> <xsl:when test="@ParentID = $ItemIDL2"> <xsl:call-template name="ItemL3"/> </xsl:when> <!-- match L4 --> <xsl:when test="@ParentID = $ItemIDL3"> <xsl:call-template name="ItemL4"/> </xsl:when> <xsl:otherwise> <xsl:element name="Otherwise"> <xsl:apply-templates/> </xsl:element> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="ItemL1"> <xsl:param name="ItemIDL1" select="@ItemID"/> <xsl:element name="ItemL1"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template name="ItemL2"> <xsl:param name="ItemIDL2" select="@ItemID"/> <xsl:element name="ItemL2"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template name="ItemL3"> <xsl:param name="ItemIDL3" select="@ItemID"/> <xsl:element name="ItemL3"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template name="ItemL4"> <xsl:param name="ItemIDL4" select="@ItemID"/> <xsl:element name="ItemL4"> <xsl:apply-templates/> </xsl:element> </xsl:template> </xsl:stylesheet> And my result is: <ItemL1>item1</ItemL1> <ItemL1>item2</ItemL1> <Otherwise>Item3</Otherwise> <Otherwise>Item4</Otherwise> <Otherwise>item5</Otherwise> <ItemL1>item6</ItemL1> So it appears that the re-setting of the parameter values isn't working ... suggestions? Thanks in advance, Mary | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
