RE: [xsl] help with recursive counter in xsl

Subject: RE: [xsl] help with recursive counter in xsl
From: "Mikael Petterson \(KI/EAB\)" <mikael.petterson@xxxxxxxxxxxx>
Date: Thu, 9 Feb 2006 14:19:26 +0100
Thanks,

That was the case.

Have a nice day!

//mikael

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: den 9 februari 2006 14:00
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] help with recursive counter in xsl

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