Marklogic 尝试将转换应用于搜索结果时出错
编辑:我做了更多的调试,当我试图安装转换而不是使用转换时,实际上会抛出该错误。但是,当我搜索数据库时,我可以在那里找到脚本 我使用的是JavaAPI和Marklogic版本8 我编写了一个xquery转换,用于在搜索检索文档时修改文档。我在查询控制台中编写了它,验证了它是否符合我的要求,但现在我将它保存在一个文件中,并试图在我的应用程序中使用它,因此出现以下错误: 服务器消息:RESTAPI-INVALIDCONTENT:(错误:FOER0000)无效内容:无效的xml_to_字符串扩展:xml_to_字符串不是有效的模块,或者在命名空间中未提供扩展函数(转换) 关于如何安装和使用转换,我几乎一字不差地遵循了文档,所以我不确定问题出在哪里,除了脚本本身。代码如下:Marklogic 尝试将转换应用于搜索结果时出错,marklogic,marklogic-8,Marklogic,Marklogic 8,编辑:我做了更多的调试,当我试图安装转换而不是使用转换时,实际上会抛出该错误。但是,当我搜索数据库时,我可以在那里找到脚本 我使用的是JavaAPI和Marklogic版本8 我编写了一个xquery转换,用于在搜索检索文档时修改文档。我在查询控制台中编写了它,验证了它是否符合我的要求,但现在我将它保存在一个文件中,并试图在我的应用程序中使用它,因此出现以下错误: 服务器消息:RESTAPI-INVALIDCONTENT:(错误:FOER0000)无效内容:无效的xml_to_字符串扩展:xml
xquery version "1.0-ml";
module namespace xmlTrans =
"http://marklogic.com/rest-api/transform/xml_to_string";
declare function xmlTrans:xmlToString(
$context as map:map,
$params as map:map,
$fullDoc as document-node()
) as document-node()
{
if(fn:empty($fullDoc/*)) then $fullDoc
else (
let $root := $fullDoc/*
let $contentArray := $root/contents
return document
{
element {fn:name($root)}
{
$root/@*, $root/element()[fn:not(fn:name(.) eq "contents")],
element contents
{
for $contentEle in $contentArray/content
return(
if($contentEle/@type = "paragraph") then (<content type="paragraph"><paragraph>{xdmp:quote($contentEle/paragraph/*)}</paragraph></content> )
else ($contentEle)
)
}
}
}
)
};
xquery版本“1.0-ml”;
模块名称空间xmlTrans=
"http://marklogic.com/rest-api/transform/xml_to_string";
声明函数xmlTrans:xmlToString(
$context作为映射:映射,
$params作为映射:映射,
$fullDoc作为文档-节点()
)作为文档-node()
{
如果(fn:empty($fullDoc/*)),则$fullDoc
否则(
让$root:=$fullDoc/*
让$contentArray:=$root/contents
返回文件
{
元素{fn:name($root)}
{
$root/@*,$root/element()[fn:not(fn:name(.)eq“contents”)],
元素含量
{
对于$contentArray/content中的$contentEle
返回(
如果($contentEle/@type=“paragration”),则({xdmp:quote($contentEle/paragration/*))
其他($contentEle)
)
}
}
}
)
};
我的语法中是否有什么错误阻止Marklogic将其识别为转换?REST API扩展遵循一种约定而非配置方法 转换扩展必须包含名为“transform”的函数--请参阅: 另外,RESTAPI即使检测到错误也会安装扩展
希望能澄清这一点,我花了数小时在文档和谷歌上,但不知何故错过了这一点。我想尖叫。非常感谢。