首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以为存在于与rewrite.xqy相同目录级别的文件定义模块命名空间吗?

我们可以为存在于与rewrite.xqy相同目录级别的文件定义模块命名空间吗?
EN

Stack Overflow用户
提问于 2017-02-26 03:13:22
回答 2查看 323关注 0票数 1

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

代码语言:javascript
复制
<error:message>Cannot evaluate library module</error:message>
<error:format-string>XDMP-EVALLIBMOD: Cannot evaluate library module: 

这背后的逻辑是什么?当我删除module namespace时,它工作得很好。这些是我的文件的开始行-

代码语言:javascript
复制
xquery version "1.0-ml"; 
module namespace adv = "http://***/***/adv"; 
import module namespace search = "http://marklogic.com/appservices/search" 
  at "/Marklogic/appservices/search/search.xqy";

'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
xdmp:set-response-content-type("text/html; charset=utf-8"),
<html xmlns="http://www.w3.org/1999/xhtml">
EN

回答 2

Stack Overflow用户

发布于 2017-02-26 05:16:38

当您定义一个模块命名空间时,您的模块应该是一个具有函数集合的library module。不过,你不能“运行”一个库模块。如果您尝试运行此代码,例如,通过粘贴到QConsole中,您将得到XDMP-EVALLIBMOD错误。

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

或者,您可以将代码作为库模块插入,并将逻辑封装为函数体,然后将该模块导入主模块并调用该函数。

票数 3
EN

Stack Overflow用户

发布于 2017-02-26 05:01:52

错误

代码语言:javascript
复制
<error:message>Cannot evaluate library module</error:message>
<error:format-string>XDMP-EVALLIBMOD: Cannot evaluate library module:

意味着你正在尝试直接评估你的代码/模块,而不是导入它。你是如何得到这个错误的?对于xquery模块,不能直接调用它,必须将其导入到另一个文件中(通常是您正在调用的文件)。

XQuery不允许单个文件既是主入口点又是模块。当你说它“工作得很好”时--这是一个很好的停止的地方。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42460452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档