[xquery-talk] Variable references and prolog grammar

Pierrick Brihaye pierrick.brihaye at culture.gouv.fr
Fri Aug 12 11:07:07 PDT 2005


Hi,

XQUERY#1 :

declare variable $foo := "foo";
declare function local:bar() {
  "bar"
};
local:bar()

returns :
"bar"

XQUERY#2 :

declare function local:bar() {
  "bar"
};
declare variable $foo := "foo";
local:bar()

returns the same result, showing that variable declarations may follow function
declarations as specficied by :
((VarDecl | FunctionDecl | OptionDecl) Separator)*

XQUERY#3 :

declare variable $foo := "foo";
declare function local:bar() {
  $foo
};
local:bar()

returns : 
"foo"

XQUERY#4 :
declare function local:bar() {
  $foo
};
declare variable $foo := "foo";
local:bar()

Saxon 8.5 returns :
Error on line 3 column 1 of file:/C:/saxon8.5/in.txt:
  XPST0003: XQuery syntax error in #...unction local:bar() { $foo }#:
    Variable $foo has not been declared
Failed to compile query

Is it a bug in the way Saxon's parser handles (or not) forward references, or is
such a forward reference disallowed by the specs ?

Cheers,

p.b.




More information about the talk mailing list