This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: xsl:variable ?


At 09:53 AM 4/10/2002, you wrote:
><xsl:template name="foo">
>   <xsl:variable name="start_x" select="5"/>
>   <xsl:if test="true">
>     <!-- use the variable and add to it -->
>     <xsl:variable name="start_x" select="10"/>

The new variable created here is only within the scope of the if-block.

>   </xsl:if>
>   <!-- if i use start_x here it just contains 5 and not 10 -->
>   <xsl:value-of select="$start_x"/>
></xsl:template>
>
>I have read that xsl:variables are constant so it
>would seem that I can not change the value of my
>variable, but if this is the case then how can I work
>around this problem? I need to store a value to use it
>later and manipulate the variable?!

   Use recursion and call your named template with a starting parameter.

<xsl:template name="foo">
   <!-- Default value of 5 if none given -->
   <xsl:param name="start_x" select="5"/>
   <xsl:if test="true">
     <xsl:call-template name="foo">
       <xsl:with-param name="start-x" select="$start_x + 5"/>
     </xsl:call-template>
   </xsl:if>
   <xsl:value-of select="$start_x"/>
</xsl:template>

   The above template is infinitely recursive because you didn't really 
provide a purpose for your template.  I therefore have no idea what your 
criteria for stopping is.  You'll probably want to add a second param that 
will get progressively smaller with each recursive call.


Greg Faron
Integre Technical Publishing Co.



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]