[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Incrementing a Global variable


Subject: Re: [xsl] Incrementing a Global variable
From: Mukul Gandhi <mukulw3@xxxxxxxxx>
Date: Wed, 27 Aug 2003 20:32:34 -0700 (PDT)

xsl:number still operates on the notion of *node
sets*. I was suggesting that if we can have a global
variable declared, can we increment its value anywhere
in the XSLT program. But this is not possible in XSLT
as this notion introduces side effects..

Regards,
Mukul

--- Bill Keese <billk@xxxxxxxxxxxxxxxxxxxx> wrote:
> Can't you use <xsl:number> to get what you want?  
> Maybe I didn't 
> understand something about the problem you were
> solving.
> 
> Bill
> 
> Mukul Gandhi wrote:
> 
> >The XSLs (by Jarno and by -- Americo) are
> brilliant..
> >I was trying to solve the problem, but could'nt
> come
> >up with the solution soon.. 
> >
> >Though the issue about incrementing the variables
> has
> >been discussed a lot on this list, I feel if there
> is
> >a feature where some sort of variable incrmenting
> is
> >possible in XSLT, it will save lot of programming
> >hours producing a trivial thing as generating
> serial
> >nos. I am not suggesting to deviate from the
> viewpoint
> >that XSLT should be a functional language. 
> >
> >But if lets say we are allowed to declare a global
> >variable and can increment it, it will make certain
> >tasks quite easy(like generating serial nos). Since
> >generating serial nos is a common requirement, IMHO
> >providing this capability in XSLT will help the
> user
> >community. Also if we can have looping constructs
> >which can iterate over number ranges for e.g.
> >
> >for (int i=0; i < n; i++) , it will facilitate
> >processing loops in a diffrent way. Presently
> for-each
> >loop iterate over *node sets*. I guess these things
> >might be added to XSLT without deviating from the
> >objective to keep XSLT as a functional language.
> >
> >The XSLT 2.0 spec is in draft stage. If
> appropriate,
> >these features can be thought to be added. Probably
> >more knowledgeable persons on this list -- M. Kay,
> >Dimitre, David Carlisle, Dave Pawson, Wendell,
> Jeni,
> >Jarno, Americo.. can comment on the appropriateness
> of
> >this idea ;)
> >
> >Regards,
> >Mukul
> >
> >
> >--- Jarno.Elovirta@xxxxxxxxx wrote:
> >  
> >
> >>Hi,
> >>
> >>    
> >>
> >>>Also i have Isolated Problem Page from  Actual
> >>>      
> >>>
> >>output
> >>    
> >>
> >>>which contains multiple pdf pages. This part is
> >>>conditionaly separated from other pdf pages (
> >>>      
> >>>
> >>which
> >>    
> >>
> >>>are
> >>>further grouped using Muenchian Method)
> >>>      
> >>>
> >>Could you integrage this approach to your
> >>stylesheets?
> >>
> >><?xml version="1.0"?>
> >><xsl:stylesheet version="1.0"
> >>xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> >>  <xsl:output method="html"/>
> >>  <xsl:variable name="varRowLimit" select="15"/>
> >>  <xsl:variable name="Student_Count"
> >>select="count(Students/Student)"/>
> >>  <xsl:template match="Students">
> >>    <title></title>
> >>    <table>
> >>      <tbody>
> >>        <xsl:apply-templates select="Student[1]"/>
> >>      </tbody>
> >>    </table>
> >>  </xsl:template>
> >>  <xsl:template match="Student" name="Student">
> >>    <xsl:param name="counter" select="1"/>
> >>    <tr>
> >>      <td>
> >>        <xsl:value-of select="$counter"/>
> >>      </td>
> >>      <td>
> >>        <xsl:value-of select="Name"/>
> >>      </td>
> >>      <td>
> >>        <xsl:value-of select="TOption"/>
> >>      </td>
> >>    </tr>
> >>    <xsl:variable name="next"
> >>select="following-sibling::Student[1]"/>
> >>    <xsl:choose>
> >>      <xsl:when test="not($next)">
> >>        <tr>
> >>          <td>
> >>            <xsl:value-of select="$counter + 1"/>
> >>          </td>
> >>          <td>
> >>            <xsl:text/>Total = <xsl:value-of
> >>select="$Student_Count"/>
> >>          </td>
> >>          <td></td>
> >>        </tr>
> >>        <xsl:call-template name="empty">
> >>          <xsl:with-param name="counter"
> >>select="$counter + 2"/>
> >>          <xsl:with-param name="left"
> >>select="$varRowLimit - $Student_Count - 3"/>
> >>        </xsl:call-template>
> >>      </xsl:when>
> >>      <xsl:when test="TOption = $next/TOption">
> >>        <xsl:apply-templates select="$next">
> >>          <xsl:with-param name="counter"
> >>select="$counter + 1"/>
> >>        </xsl:apply-templates>
> >>      </xsl:when>
> >>      <xsl:otherwise>
> >>        <xsl:call-template name="empty">
> >>          <xsl:with-param name="counter"
> >>select="$counter + 1"/>
> >>        </xsl:call-template>
> >>        <xsl:apply-templates select="$next">
> >>          <xsl:with-param name="counter"
> >>select="$counter + 2"/>
> >>        </xsl:apply-templates>
> >>      </xsl:otherwise>
> >>    </xsl:choose>
> >>  </xsl:template>
> >>  <xsl:template name="empty">
> >>    <xsl:param name="counter" select="0"/>
> >>    <xsl:param name="left" select="1"/>
> >>    <xsl:if test="$left">
> >>      <tr>
> >>        <td>
> >>          <xsl:value-of select="$counter"/>
> >>        </td>
> >>        <td></td>
> >>        <td></td>
> >>      </tr>
> >>      <xsl:call-template name="empty">
> >>        <xsl:with-param name="counter"
> >>select="$counter + 1"/>
> >>        <xsl:with-param name="left" select="$left
> -
> >>1"/>
> >>      </xsl:call-template>
> >>    </xsl:if>
> >>  </xsl:template>
> >></xsl:stylesheet>
> >>
> >>Cheers,
> >>
> >>Jarno - Feindflug: Größenwahn (Life Cried Remix)
> >>
> >> XSL-List info and archive: 
> >>http://www.mulberrytech.com/xsl/xsl-list
> >>
> >>    
> >>
> >
> >
> >__________________________________
> >Do you Yahoo!?
> >Yahoo! SiteBuilder - Free, easy-to-use web site
> design software
> >http://sitebuilder.yahoo.com
> >
> > XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> >
> >
> >
> >  
> >
> 
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

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



Current Thread
Keywords