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 相匹配。
我有一个文件 "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 相匹配。