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()<=$n]">
<xsl:value-of select="position()"/>
<xsl:if test="position()<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