尝试将变换应用于搜索结果时的错误

时间:2017-07-18 21:35:30

标签: marklogic marklogic-8

编辑:我做了一些调试,当我尝试安装转换时,实际上抛出了错误,而不是使用它。但是,当我搜索我的数据库时,我可以在那里找到该脚本。

我正在使用Java API和Marklogic版本8.

我编写了一个xquery转换来修改搜索检索到的文档。我在查询控制台中编写了它,确认它完成了我想要的操作,但是现在我将它放在一个文件中并且我试图在我的应用程序中使用它时出现以下错误:

  

服务器消息:RESTAPI-INVALIDCONTENT :(错误:FOER0000)内容无效:xml_to_string扩展名无效:xml_to_string要么不是有效模块,要么在http://marklogic.com/rest-api/transform/xml_to_string命名空间中不提供扩展函数(转换)

我按照文档非常接近于如何安装和使用转换,所以我不确定问题所在,除了可能在脚本本身。代码如下:

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将其识别为转换的错误?

1 个答案:

答案 0 :(得分:2)

REST API扩展遵循约定优于配置的方法。

变换扩展必须包含名为“transform”的函数 - 请参阅:

http://docs.marklogic.com/guide/rest-dev/transforms#id_17421

此外,即使REST API检测到错误,它也会安装扩展程序。

希望澄清,