This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Top level variables and parameters
- To: "Phil Capon" <phil at csw dot co dot uk>
- Subject: Re: Top level variables and parameters
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Wed, 8 Nov 2000 09:59:48 +0000
- CC: XSL-List at mulberrytech dot com
- Organization: Jeni Tennison Consulting Ltd
- References: <NEBBJPFNFKDCCLIGBKJPOEDHCCAA.phil@csw.co.uk>
- Reply-To: xsl-list at mulberrytech dot com
Phil,
> <xsl:param name="myparam"/>
> <xsl:variable name="myvar" select="$myparam"/>
>
> In xt, this works fine. In Xalan 1.0.1, this works fine. However, in Xalan
> 1.2, this gives an error:
> "VariableReference given for variable out of context or without definition!
> Name = myparam, source tree node: #document"
>
> Does anybody know which behaviour is "correct"? ie is it valid to assign top
> level variables using top level parameters? This is useful sometimes, say
> when I pass in a nodeset as a parameter, and want to pick out a subset of
> elements and assign them to a variable. Of course, I'm sure there are
> alternative ways of doing what I want; the point is that I don't want to
> rewrite some existing stylesheets in order to upgrade to Xalan 1.2 and then
> find that this is non-standard behaviour.
The XSLT Rec. says:
"If the template or expression specifying the value of a global
variable x references a global variable y, then the value for y must
be computed before the value of x. It is an error if it is impossible
to do this for all global variable definitions; in other words, it is
an error if the definitions are circular."
http://www.w3.org/TR/xslt#top-level-variables
From what you have above, it doesn't look as though you have a
circular definition, and $myparam is defined before $myvar, so my
interpretation would be that this is a Xalan 1.2 bug.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list