xquery (eXist-db) - 找不到导入的模块

xquery (eXist-db) - imported module not found

我有一个文件 "globalvar.xql",其中包含我希望可以成为我所有不变变量(实际上是参数)的中心文档。

为了使用这些,我知道我必须 declare/import 将模块添加到将使用它们的任何其他文档中。在这种情况下,我想在 "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 演示中找到的代码,并查看其他资源,但错误让我感到困惑。

非常感谢。

在您的模块导入声明中,您将目标模块的命名空间 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 相匹配。