Re: [xsl] Loops and variables question

Subject: Re: [xsl] Loops and variables question
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 27 Nov 2003 11:29:05 GMT
> How can implement this if a variable cannot be redefined??

It's not clear why people think that the use of variables in XSLT is any
kind of restriction, it explictly is not a restriction. there is no
computation that requires variables to be redefined.


the code I posted before had a slight typo so here it is again, tested:
This relies on your stylesheet having more nodes than the larget value
of @quantity.


<ROOMS>
 <ROOM quantity="5"/>
 <ROOM quantity="3"/>
 <ROOM quantity="7"/>
</ROOMS>


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:template match="ROOM">
<xsl:variable name="n" select="@quantity"/>
Room: <xsl:for-each select="(document('')//node())[position()&lt;=$n]">
<xsl:value-of select="position()"/>
<xsl:if test="position()&lt;last()">, </xsl:if>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>



$ saxon room.xml room.xsl
<?xml version="1.0" encoding="utf

Room: 1, 2, 3, 4, 5

Room: 1, 2, 3

Room: 1, 2, 3, 4, 5, 6, 7


===============================================


In xslt 2 you could use the more natural construct (and no variables at
all)


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:template match="ROOM">
Room: <xsl:value-of select="1 to @quantity">
</xsl:template>

</xsl:stylesheet>

$ saxon7 room.xml room.xsl
<?xml version="1.0" encoding="UTF-8"?>

Room: 1, 2, 3, 4, 5

Room: 1, 2, 3

Room: 1, 2, 3, 4, 5, 6, 7



David

-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread