Subject: Re: Variable Scope From: David Carlisle <davidc@xxxxxxxxx> Date: Thu, 9 Nov 2000 12:50:58 GMT |
> What I'm not clear about is why the 'here' variable is updatable as the > for-each iterates, it was my understanding that variable values cannot be > changed. Essentially you can't change the value of a variable once it's bound, but you can bind a new variable that has the same name. (XSLT imposes some restrictions on when you can rebind, to avoid confusion, one assumes) The body of the for-each is a template, like the body of xsl:template each time you go round the loop the template body is instantiated again and you get a new variable called here, its scope ends at the end of that template body, ie effectively you get a new variable created and discarded each time round the loop. Note this is completely different from the use of variables in loops in procedural languages where the _same_ variable survives throughout the loop, carrying state information (like how many times the loop has been executed). The "variable value can't change" mantra refers to the fact that there is not an analogue of x=x+1 which some people, corrupted by procedural languages seem to feel is a natural thing to write, whereas it is obviously an affront to the laws of nature, unless x happens to be 0:-) David _____________________________________________________________________ This message has been checked for all known viruses by Star Internet delivered through the MessageLabs Virus Control Centre. For further information visit http://www.star.net.uk/stats.asp XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Variable Scope, Stuart Wilson | Thread | RE: Good example of xml to xsl styl, Bassi Suk |
RE: Good example of xml to xsl styl, Bassi Suk | Date | unparsed-entity-uri ??, Carlberg, Anders |
Month |