RE: [xsl] Reference to variable cannot be resolved.

Subject: RE: [xsl] Reference to variable cannot be resolved.
From: Américo Albuquerque <aalbuquerque@xxxxxxxxxxxxxxxx>
Date: Fri, 14 Feb 2003 14:08:09 -0000
Hi.
You can do the same thing in other languages:
<script>
var c = "hi ";
document.write(c);
function test() {
 var c = "hello ";
 document.write(c);
}
test();
document.write(c);
</script>

and you'll get 'hi hello hi'.
The global variable isn't changed by the local variable.

The main diference is that in xsl you can't change it's value, but you
can have several variables with the same name if they are in different
scopes


-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Mike Brown
Sent: Friday, February 14, 2003 11:12 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Reference to variable cannot be resolved.

David Carlisle wrote:
> 
> 
> > Explaining to people why that's legal, after telling them they can
only
> > assign x once, is a nice challenge :)
> 
> You can only assign a value to a variable once but you can have two
> variables with the same name, but only one in scope at any point in
the
> program.

2 buts in one sentence... you're sounding like me now. One possible
reading of
your explanation would be that when one variable binding occurs at the
top
level and the other occurs in a template, they are different variables
with
the same name, whereas if both bindings occur at the top level, or if
both
occur within a single template, they are binding the same variable.

Perhaps a simpler way to look at it is that the variable binding element
(xsl:variable or xsl:param) is just creating/importing an object and
giving it
a name. The name is then in scope among all following siblings and their
descendants. The name can be one that is already in scope only if the
other
binding that used that name was made at the top level and this binding
is
being made in a template.

No matter how you explain it, there's nothing really intuitive about it;
it's
just the way things are; you have to state that the top-level bindings
are 
global, yet overridable within a template, no?

Mike

-- 
  Mike J. Brown   |  http://skew.org/~mike/resume/
  Denver, CO, USA |  http://skew.org/xml/

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


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


Current Thread