Re: [xsl] variable scope and test directives

Subject: Re: [xsl] variable scope and test directives
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Thu, 20 Feb 2003 01:37:24 -0800 (PST)
> Is it just my Sablotron processor, or are variables declared inside
> xsl:choose trapped inside the "choose" scope(?)?
> 
> That seems useless. It means I can't do things like.
> 
> <xsl:choose>
>     <xsl:when test="/app/presentation/series_id='0'">
>         <xsl:variable name="defaultOption">
>             <option value="0">&#xa0;</option>
>         </xsl:variable>
>     </xsl:when>
>     <xsl:otherwise>
>         <xsl:variable name="defaultOption" select="''" />
>     </xsl:otherwise>
> </xsl:choose>

Of course you can, but the xsl:variables so declared go immediately out
of scope and are useless as you have found out.

Do:

<xsl:variable name="someName">
  <xsl:choose>
   <!-- As many values on conditions as necessary -->
  </xsl:choose>
</xsl:variable> 

[skip]

> Surely no other language does this - because it's, er, stupid!

All block-structured languages have the notion of scope, e.g. in C:


if(someCondition)
{
  int c = 3;
}
else
{
}

/* The above variable "c" is out of scope here */



This is direct translation of your problem in C. As you see, in C the
situation is exactly the same...

So what's stupid about it?




=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL

__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/

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


Current Thread