This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: variable going out of scope in a for-each loop?
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