我有一个文件“ globalvar.xql”,其中包含我希望可以成为我所有不变变量(实际上是参数)的中央文档。
为了使用它们,我理解我必须声明该模块/将其导入到其他任何将使用它们的文档中。在这种情况下,我想在“ person.xql”中的函数中使用它们。因此,我尝试了一个声明:
import module namespace globalvar="/db/apps/deheresi/modules/globalvar.xqm";
但是我验证时收到错误消息:
Cannot compile xquery: exerr:ERROR error found while loading module globalvar: Error while loading module /db/apps/deheresi/modules/globalvar.xqm: namespace URI declared by module (/db/apps/deheresi/modules/globalvar) does not match namespace URI in import statement, which was: /db/apps/deheresi/modules/globalvar.xqm
错误,代码和目录如下图。
我一直在尝试模仿eXist-db演示中找到的代码,并查看其他资源,但是错误使我迷惑不解。
非常感谢。
答案 0 :(得分:3)
在模块导入声明中,已将目标模块的名称空间URI和位置URI进行了混合。
要解决此问题,您需要(1)在当前拥有位置URI的位置添加名称空间URI,(2)添加at
子句,以及(3)将位置URI移至正确的位置at
子句之后的位置。
换句话说,它应该像这样:
import module namespace globalvar="globalvar-namespace-uri" at "/db/apps/deheresi/modules/globalvar.xqm";
当然,"globalvar-namespace-uri"
只是目标模块名称空间URI的占位符。它需要匹配目标模块中定义的名称空间URI。