RE: [xsl] xsl:variable

Subject: RE: [xsl] xsl:variable
From: Andrew Curry <andrew.curry@xxxxxxxxxxxx>
Date: Thu, 22 Jul 2004 16:23:17 +0100
As far as im aware global variables are not supported in xml 1.0...
You could possibly get round this with a recursive template of some kind
which is what i have used when faced with a similar problem. maybe something
along the lines of....

        <xsl:template name="list_data">
                <xsl:variable name="totalelements"
select="count(ELEMENT_TO_COUNT)"/>
                <xsl:variable name="pages" select="ceiling($totalelements
div 12)"/>
                <xsl:call-template name="produce-pages">
                        <xsl:with-param name="count" select="1"/>
                        <xsl:with-param name="max" select="$pages+1"/>
                </xsl:call-template>
        </xsl:template>

        <xsl:template name="produce-pages">
                <xsl:param name="count"/>
                <xsl:param name="max"/>
                <xsl:param name="maxdata" select="$count * 12"/>
                <xsl:param name="minddata" select="($maxrunners - 12) +1"/>
                <xsl:param name="datacount" select="0"/>
                <xsl:if test="$count != $max">
               <xsl:for-each select="DATA">
               <xsl:if test="position() &lt;=$maxdata and position()
&gt;=$mindata">
               <xsl:call-template name="display_data"/>
		</xsl:if>
               </xsl:for-each>
                                       
                <xsl:call-template name="produce-pages">
                                <xsl:with-param name="count" select="$count
+ 1"/>
                                <xsl:with-param name="max" select="$max"/>
                        </xsl:call-template>
                </xsl:if>
        </xsl:template>

-----Original Message-----
From: Evan Wellens [mailto:evanw@xxxxxxxxxxxxxxxxxxxx]
Sent: 22 July 2004 16:11
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] xsl:variable


Hi

         Hopefully I'm just missing something silly here.  I need to 
declare a variable that will be used globally and possibly modify if a 
condition occurs. Yet I cannot discern the syntax to do so , any attempt 
seems to re-declare the variable.



The intent here is to increment the value pages if the condition is true. 
If I declare a new variable within the If to hold the value it will go out 
of scope which doesn't help me.

Ie.
Thanks in advance for any ideas.

<xsl:variable name="pages" select="( $totalitems - $leftover ) div 
$pagesize "/>
<xsl:if test="leftover &gt; 0 ">
         <xsl:variable name="$pages" select="$pages  =$pages +1"/>
</xsl:if>

Current Thread