RE: [xsl] Recursively looping through a template only X number of times?

Subject: RE: [xsl] Recursively looping through a template only X number of times?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 28 Nov 2006 17:15:16 -0000
> However, if I do that...
> 
> <xsl:variable name="TOCTemplateLoopCount" select="0" /> 
> <xsl:template name="rulelistTOC">
> 	<xsl:variable name="TOCTemplateLoopCount"
> select="$TOCTemplateLoopCount+1"/>
> 	...
> </template>
> 
> It seems to get re-set to '0' on each pass of the template as 
> it is evaluated to '0 + 1' each time. I'm confused as to why that is.

The variable isn't being reset. You have two completely different variables,
that just happen to share the same name. It's exactly as if you had written

<xsl:variable name="TOCTemplateLoopCount-1111" select="0" /> 
<xsl:template name="rulelistTOC">
   <xsl:variable name="TOCTemplateLoopCount-2222"
select="$TOCTemplateLoopCount-1111 + 1"/>

You want to use template parameters. Declare xsl:param inside the template,
and use xsl:with-param to set a value on the call.

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

Current Thread