尝试将转换应用于搜索结果时出错
Errors when trying to apply transform to search results
编辑: 我做了更多的调试,当我尝试安装转换而不是使用它时,实际上会抛出该错误。但是,当我搜索我的数据库时,我可以在那里找到脚本。
我正在使用 Java API 和 Marklogic 版本 8。
我编写了一个 xquery 转换来修改通过搜索检索到的文档。我在查询控制台中写了它,验证它做了我想要的,但现在我把它放在一个文件中并试图在我的应用程序中使用它,我收到以下错误:
Server Message: RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content: invalid xml_to_string extension: xml_to_string either is not a valid module or does not provide extension functions (transform) in the http://marklogic.com/rest-api/transform/xml_to_string namespace
关于如何安装和使用转换,我几乎一字不差地遵循了文档,所以我不太确定问题出在哪里,除了可能在脚本本身。代码如下:
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)
)
}
}
}
)
};
我的语法是否有问题导致 Marklogic 无法将其识别为转换?
REST API 扩展遵循约定优于配置的方法。
转换扩展必须包含一个名为 "transform" 的函数——参见:
http://docs.marklogic.com/guide/rest-dev/transforms#id_17421
此外,REST API 即使检测到错误也会安装扩展。
希望澄清,
编辑: 我做了更多的调试,当我尝试安装转换而不是使用它时,实际上会抛出该错误。但是,当我搜索我的数据库时,我可以在那里找到脚本。
我正在使用 Java API 和 Marklogic 版本 8。
我编写了一个 xquery 转换来修改通过搜索检索到的文档。我在查询控制台中写了它,验证它做了我想要的,但现在我把它放在一个文件中并试图在我的应用程序中使用它,我收到以下错误:
Server Message: RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content: invalid xml_to_string extension: xml_to_string either is not a valid module or does not provide extension functions (transform) in the http://marklogic.com/rest-api/transform/xml_to_string namespace
关于如何安装和使用转换,我几乎一字不差地遵循了文档,所以我不太确定问题出在哪里,除了可能在脚本本身。代码如下:
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)
)
}
}
}
)
};
我的语法是否有问题导致 Marklogic 无法将其识别为转换?
REST API 扩展遵循约定优于配置的方法。
转换扩展必须包含一个名为 "transform" 的函数——参见:
http://docs.marklogic.com/guide/rest-dev/transforms#id_17421
此外,REST API 即使检测到错误也会安装扩展。
希望澄清,