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

时间:2018-10-11 15:26:48

标签: global-variables xquery exist-db

我有一个文件“ 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演示中找到的代码,并查看其他资源,但是错误使我迷惑不解。

非常感谢。

Screen shot of code and error

1 个答案:

答案 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。