xsl-list
[Top] [All Lists]

Re: Loops and variables question

2003-11-27 05:01:19
Fran wrote:
Hi,
I want to build a list with the quantity attribute of the all ROOMS nodes.
I have this XML:

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

your xml buffer is not correct :)
close your ROOM tag...

<snip/>


How can implement this if a variable cannot be redefined??

you can use a named template, and call it recursively like this
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:template match="ROOMS/ROOM">
  <xsl:call-template name="print">
    <xsl:with-param name="max" select="@quantity"/>
  </xsl:call-template>
</xsl:template>

<xsl:template name="print">
  <xsl:param name="max"/>
  <xsl:param name="count">1</xsl:param>
        
  <xsl:choose>
    <xsl:when test="$count &lt; $max">
      <xsl:value-of select="$count"/><xsl:text>,</xsl:text>
      <xsl:call-template name="print">
        <xsl:with-param name="max" select="$max"/>
        <xsl:with-param name="count" select="$count + 1"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:when test="$count = $max">
      <xsl:value-of select="$count"/>
    </xsl:when>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>



Then the ouput will be

<?xml version="1.0" encoding="UTF-8"?>

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


Fred

-- 
XPath free testing software :  http://lantern.sourceforge.net
Frédéric Laurent                     http://www.opikanoba.org

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



<Prev in Thread] Current Thread [Next in Thread>