Subject: Re: [xsl] Help using recursion on descendants of siblings From: David Carlisle <davidc@xxxxxxxxx> Date: Wed, 5 Dec 2007 18:43:47 GMT |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:template match="menu"> <meals> <xsl:call-template name="menu"> <xsl:with-param name="items" select="menu-item"/> <xsl:with-param name="o" select="/.."/> </xsl:call-template> </meals> </xsl:template> <xsl:template name="menu"> <xsl:param name="items"/> <xsl:param name="o" /> <xsl:for-each select="$items[1]/value"> <xsl:choose> <xsl:when test="../following-sibling::menu-item"> <xsl:call-template name="menu"> <xsl:with-param name="items" select="../following-sibling::menu-item"/> <xsl:with-param name="o"> <xsl:copy-of select="$o"/> <xsl:apply-templates select="."/> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <meal> <xsl:copy-of select="$o"/> <xsl:apply-templates select="."/> </meal> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> <xsl:template match="value"> <xsl:element name="{../@name}"><xsl:value-of select="."/></xsl:element> </xsl:template> </xsl:stylesheet> <menu> <menu-item name="appetizer"> <value>Nachos</value> <value>Potato skins</value> </menu-item> <menu-item name="entree"> <value>Chicken pot pie</value> <value>Pasta</value> <value>Steak and potatoes</value> <value>Tacos</value> </menu-item> <menu-item name="dessert"> <value>Blueberry pie</value> <value>Chocolate ice cream</value> <value>Strawberry cheesecake</value> </menu-item> </menu> <?xml version="1.0" encoding="utf-8"?> <meals> <meal> <appetizer>Nachos</appetizer> <entree>Chicken pot pie</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Chicken pot pie</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Chicken pot pie</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Pasta</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Pasta</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Pasta</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Steak and potatoes</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Steak and potatoes</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Steak and potatoes</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Tacos</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Tacos</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Nachos</appetizer> <entree>Tacos</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Chicken pot pie</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Chicken pot pie</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Chicken pot pie</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Pasta</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Pasta</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Pasta</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Steak and potatoes</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Steak and potatoes</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Steak and potatoes</entree> <dessert>Strawberry cheesecake</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Tacos</entree> <dessert>Blueberry pie</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Tacos</entree> <dessert>Chocolate ice cream</dessert> </meal> <meal> <appetizer>Potato skins</appetizer> <entree>Tacos</entree> <dessert>Strawberry cheesecake</dessert> </meal> </meals> ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Help using recursion on desce, joseph . a . gilvary | Thread | [xsl] Schema problem: different ele, Sascha Mantscheff |
Re: [xsl] Grouping repeating elemen, Cynthia . Arangua | Date | [xsl] Schema problem: different ele, Sascha Mantscheff |
Month |