RE: [xsl] help with recursive counter in xsl

Subject: RE: [xsl] help with recursive counter in xsl
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 9 Feb 2006 12:59:39 -0000
Your recursive call only passes one parameter; so on the second call
$maxCount will be "", $arrayMax will be NaN, and $value &lt; $arrayMax will
be false. 

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Mikael Petterson (KI/EAB) 
> [mailto:mikael.petterson@xxxxxxxxxxxx] 
> Sent: 09 February 2006 12:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] help with recursive counter in xsl 
> 
> Hi,
> 
> I call the sequenceNameString template with:
> 
>   <xsl:when test="child::*[name() = 'sequence']">
>     <xsl:call-template name="sequenceNameString">
>     <xsl:with-param name="sequenceName" select="@name"/>   
>     <xsl:with-param name="maxCount" select="sequence/maxLength"/>
>     <xsl:with-param name="value" select="0"/>               
>   </xsl:call-template></xsl:when>
> 
> I can check that the parameter values are sent to the template.
> However the incrementation of value does not happen.
> 
> I get the following only once( example):
> 
> eAgchCodes_name0
> 
> but want:
> 
>  eAgchCodes_name0
>  eAgchCodes_name1
>  eAgchCodes_name2
> ......
> 
> Any ideas why?
> 
> cheers,
> 
> //Mikael
> 
> !-- Template that create "<sequencename>_name0",
> "<sequencename>_name1"..-->
> <xsl:template name="sequenceNameString">
>     <xsl:param name="sequenceName"/>
>         <xsl:param name="maxCount"/>
>         <xsl:param name="value"/>
>     <xsl:param name="arrayMax" select="$maxCount - 1"/>
>     <xsl:if test="$value &lt; $arrayMax">
>         <xsl:value-of
> select="concat(concat($sequenceName,'_name'),$value)"/>
>         <xsl:call-template name="sequenceNameString">
>             <xsl:with-param name="value" select="$value + 1"/>
>         </xsl:call-template>
>     </xsl:if>
> </xsl:template>

Current Thread