[xsl] Re: Re: What do we have in variable?

Subject: [xsl] Re: Re: What do we have in variable?
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Thu, 9 May 2002 12:48:46 -0700 (PDT)
> >I'm just trying to understand, whenever we initialize some variable
> > for example in that way <xsl:variable name="somevar" 
> > select="ancestor::*"/> what do we have stored inside it? Is it an 
> > array or some root node?
> It's not an array: there is no such thing in the data model. Nor is 
> it a root node: it's a node set.

More precisely, in this concrete case this will evaluate to a node-set
consisting only of element nodes, or the empty node-set.

> What node set it is, exactly, depends on the context node, which is 
> to say the node from which the ancestory axis, in this case, is 
> traversed; this will depend on where the variable declaration occurs 
> (inside which template or instruction, etc.). The dependence of the 
> node set returned by an XPath location path on the context in which 
> that location path is invoked is one of the important subtleties of 
> XPath commonly missed by newcomers to the language.

I think that the question "what an xsl:variable contains?" is a little
bit incorrect. The right question should be: "what an xsl:variable
evaluates to?".

For me "contains" is synonymous with "it is a store, that has contents
at any moment".

On the other side, an xsl:variable may be evaluated only when it's been
referenced (e.g. lazy evaluation), or it may not be created at all
until it's necessary, or it may be destroyed between two moments when
it's referenced (e.g. space optimisation).

I think, it's important to distinguish an xsl:variable from "store". In
fact it is a "definition", which may or may not be evaluated.

Dimitre Novatchev.

Do You Yahoo!?
Yahoo! Shopping - Mother's Day is May 12th!

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

Current Thread