[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: variable going out of scope in a for-each loop?

Subject: Re: variable going out of scope in a for-each loop?
From: Eric Smith <Eric.Smith@xxxxxxxxxxxx>
Date: Mon, 10 Dec 2001 00:20:22 +0100
fop xsl variable scope
According to Oleg Tkachenko on Mon, Dec 10, 2001 at 12:55:18AM +0200:
> >      <xsl:for-each select="cell">
> >          <xsl:if test="number(.)=number(.)">
> >            We have a number here 
> >          <xsl:choose>
> >            <xsl:when test="position() mod 2 = 0">
> >              mod 2 = 0!
> >              <xsl:variable name="aantal_uren">
> >                <xsl:value-of select="."/>
> >              </xsl:variable>
> >              The value of the aantal_uren is: <xsl:value-of 
> > select="$aantal_uren"/>||
> >              The value of the uur_tarief is: <xsl:value-of 
> > select="$uur_tarief"/>||
> >            </xsl:when>
> 
> Oops, $aantal_uren is gone :(
> 
> >            <xsl:otherwise>
> >              mod 2 != 0!
> >              <xsl:variable name="uur_tarief">
> >                <xsl:value-of select="."/>
> >              </xsl:variable>
> >              The value of the aantal_uren is: <xsl:value-of 
> > select="$aantal_uren"/>||
> 
> Here must be syntax error - unresolved variable reference.
> 
> > Now, as soon as I loop form the first number containing cell to 
> > the next, the 
> > value defined in the previous-sibling seems to go out of scope viz.
> Moreover, a scope of local variable is its parent element boundaries, so when you declare variable within <xsl:when> element, you lose it after </xsl:when> end tag.
I declared both vars at the start of the stylesheet so I do not
know if this makes it a global or local variable.
> 
> > why?
> Perhaps because the processor you are using is trying to be xslt1.0 rec compliant :)

I just tried the same thing with xalan and the var also went
out of scope (seemingly).

- perhaps i am going about this the wrong way - i need to calcualte the product of the
last two cells in a row viz.

         <row header="phase">
            <cell>
              John Doe
            </cell>
            <cell>
              Engineer
            </cell>
            <cell>
              246
            </cell>
            <cell>
              135
            </cell>
          </row>

This should be so easy to do (maybe it is?).

-- 
Eric Smith - currently using xalan and xsltproc - what a difference speed makes - and fop on linux

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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.