[xquery-talk] Modules and duplicate declarations
Ronald Bourret
rpbourret at rpbourret.com
Fri Jul 20 22:39:41 PDT 2007
Hello,
I am having trouble understanding how to import the same module in
multiple places.
The test query requires modules A and B, and module A requires module B.
Therefore, test imports A and B, and A imports B:
alib.xqy
--------
module namespace a = "a";
import module namespace b = "b" at "...";
declare variable $a:a1 := fn:concat("a", $b:b1);
blib.xqy
--------
module namespace b = "b";
declare variable $b:b1 := "b";
test.xqy
--------
import module namespace a = "a" at "...";
import module namespace b = "b" at "...";
($a:a1, $b:b1)
Running test returns XQST0049, stating that $b:b1 was declared twice. If
test doesn't import blib.xqy, it returns XPST0008, stating that prefix b
has not been declared.
I don't understand the first error. The XQuery spec states that module
imports are not transitive. That is, if A imports B and B imports C, C
is not visible to A. Thus, $b:b1 should be visible to test only by
directly importing blib.xqy and not by importing alib.xqy.
Is this a bug in the processor (Saxon 8.6.1) or am I misreading the spec?
Thanks,
-- Ron
More information about the talk
mailing list