我们可以为与rewrite.xqy位于同一目录级别的文件定义模块名称空间吗?

时间:2017-02-25 19:13:22

标签: xquery marklogic

我有一个与TabBar处于同一级别的文件,即它不存在于特定目录中。当我为它声明rewrite.xqy时,我收到以下错误 -

module namespace

这背后的逻辑是什么,因为当我删除<error:message>Cannot evaluate library module</error:message> <error:format-string>XDMP-EVALLIBMOD: Cannot evaluate library module: 时,它的工作正常。这些是我的文件的起始行 -

module namespace

2 个答案:

答案 0 :(得分:3)

定义模块命名空间时,模块应该是带有函数集合的library module。你没有&#34;跑步&#34;虽然是图书馆模块。如果您尝试运行此代码,例如通过粘贴到QConsole,您将收到 XDMP-EVALLIBMOD 错误。

预计main module将作为XQuery程序执行。删除模块名称空间module namespace adv = "http://***/***/adv";,它将无误地执行。

或者您可以将代码作为库模块插入,并将逻辑作为函数体包含在内,将该模块导入主模块并调用该函数。

答案 1 :(得分:1)

错误

<error:message>Cannot evaluate library module</error:message>
<error:format-string>XDMP-EVALLIBMOD: Cannot evaluate library module:

表示您试图直接评估您的代码/模块而不是导入它。 你是怎么得到这个错误的? 对于xquery模块,您无法直接调用它,您必须将其导入另一个文件(通常是您正在调用的文件)。

XQuery不允许单个文件既是主入口点又是模块。 当你说'工作正常'时 - 这是一个停下来的好地方。

相关问题