[xquery-talk] Global variables in XQuery

Massimo Franceschet francesc at science.uva.nl
Wed Oct 4 18:24:58 PDT 2006


Hi,

I am confused about the behaviour of (what are called) global variables in
XQuery. In paricular, I am not able to modify the value of a global
variable inside a user-defined function. Here is an example:

declare namespace my = 'my:stuff';
declare variable $my:global as xs:integer := 1;

declare function my:fact($n as xs:integer) as xs:integer
{
	let $my:global := $my:global + 1
        return if ($n < 2)
	then 1
	else $n * my:fact($n - 1)
};

let $x := my:fact(10)
return $x div $my:global

When I run this query the global variable $my:global is not modified by
the function my:fact and retains its original value (1). The result of the
query is always 10! (instead of 10!/11).

Massimo




More information about the talk mailing list