[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: very Simple nested for each loops...
Hi. > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Andy.Benson@xxxxxxx > Sent: Wednesday, August 06, 2003 4:52 PM > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: very Simple nested for each loops... > > > Hi I have some simple perl code that I want to convert into a > XSL stylesheet. The variables $set1 and $set2 would be > configured in XML. Any simple suggestions are very welcome. > > best regards > > Andy > > > This can be done using a config file where you can set the rules to work. Main xml file: <mux> <set1>1</set1> <set2>0</set2> </mux> XML config file: <config> <set name="set1" on="1"> <letters> <letter value="a"/> <letter value="b"/> </letters> <numbers> <number value="0"/> <number value="1"/> <number value="2"/> <number value="3"/> </numbers> </set> <set name="set2"> <letters> <letter value="x"/> <letter value="y"/> <letter value="z"/> </letters> <numbers> <number value="0"/> <number value="1"/> <number value="2"/> <number value="3"/> <number value="4"/> <number value="5"/> </numbers> </set> </config> Stylesheet: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="mux"> <xsl:variable name="cnfg" select="document('config.xml')/config"/> <xsl:apply-templates select="document('config.xml')/config/*"> <xsl:with-param name="sets" select="current()/*"/> </xsl:apply-templates> </xsl:template> <xsl:template match="set"> <xsl:param name="sets" select="/.."/> <xsl:apply-templates mode="mux" select="$sets[name()=current()/@name and normalize-space()=current()/@on]"> <xsl:with-param name="letters" select="current()/letters"/> <xsl:with-param name="numbers" select="current()/numbers"/> </xsl:apply-templates> </xsl:template> <xsl:template match="*" mode="mux"> <xsl:param name="letters" select="/.."/> <xsl:param name="numbers" select="/.."/> <xsl:for-each select="$letters/letter"> <xsl:variable name="letter" select="@value"/> <xsl:for-each select="$numbers/number"> <xsl:value-of select="$letter"/> <xsl:value-of select="@value"/> <xsl:text> </xsl:text> </xsl:for-each> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> Hope this helps you. Regards, Americo Albuquerque (...) 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
|