在MarkLogic Server中安装转换

在MarkLogic Server中安装转换,marklogic,Marklogic,我试图将转换加载到marklogic数据库,但失败导致“要么不是有效的模块,要么没有在名称空间中提供扩展函数(转换)” 我的xqy文件如下: xquery version "1.0-ml"; module namespace trans = "http://marklogic.com/rest-api/transform/validate"; declare function trans:transform( $context as map:map, $params as map

我试图将转换加载到marklogic数据库,但失败导致“要么不是有效的模块,要么没有在名称空间中提供扩展函数(转换)”

我的xqy文件如下:

xquery version "1.0-ml";
module namespace trans = "http://marklogic.com/rest-api/transform/validate";
declare function trans:transform(
    $context as map:map,
    $params as map:map,
    $content as document-node()
) as document-node()
{
    let $validate := validate strict { $content }
    return $content;
};
我正在运行以下命令:

curl --anyauth --user admin:admin -X PUT -d@"./filetype_xform.xqy" -i -H "Content-type: application/xquery" 'http://localhost:8061/v1/config/transforms/validate'
我看到的错误是: HTTP/1.1400错误请求 内容类型:application/json;字符集=UTF-8 服务器:MarkLogic 内容长度:557 连接:保持活力 保持活动状态:超时=5

{"errorResponse":{"statusCode":400, "status":"Bad Request", "messageCode":"RESTAPI-INVALIDCONTENT", "message":"RESTAPI-INVALIDCONTENT: (err:FOER0000) Invalid content: invalid validate extension: could not parse XQuery extension validate; please see the server error log for detail XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected Rbrace_, expecting Function30_ or Percent_; validate either is not a valid module or does not provide extension functions (transform) in the http://marklogic.com/rest-api/transform/validate namespace"}}[admin@localhost transformations]

非常感谢您对解决此问题的帮助。

请在返回$content后删除分号:

xquery version "1.0-ml";
module namespace trans = "http://marklogic.com/rest-api/transform/validate";
declare function trans:transform(
    $context as map:map,
    $params as map:map,
    $content as document-node()
) as document-node()
{
    let $validate := validate strict { $content }
    return $content
};

只需在return$content后删除分号:

xquery version "1.0-ml";
module namespace trans = "http://marklogic.com/rest-api/transform/validate";
declare function trans:transform(
    $context as map:map,
    $params as map:map,
    $content as document-node()
) as document-node()
{
    let $validate := validate strict { $content }
    return $content
};

我有一篇类似的帖子,但删除了它,因为这篇文章就在我之前。明确地说,ML不会加载语法错误的文件。RESTAPI的响应以及ML错误日志是您的朋友。虽然有点模糊,但它仍然告诉你,你的代码本身被破坏了,这给了你一个可以查看的地方。你可以从REST API获得一个完整的堆栈跟踪,方法是在Admin应用程序中转到Groups-Default,并将“file log level”(文件日志级别)调到“debug”(调试)。我有一篇类似的帖子,但删除了它,因为它就在我之前出现。明确地说,ML不会加载语法错误的文件。RESTAPI的响应以及ML错误日志是您的朋友。虽然有点模糊,但它仍然告诉您代码本身已损坏,这给了您一个查看的地方。您可以从REST API获得完整的堆栈跟踪,方法是转到管理应用程序中的“组-默认值”,并将“文件日志级别”调高到“调试”。