#marklogic
#marklogic
Вопрос:
Я пытаюсь загрузить преобразование в базу данных marklogic, но это приводит к сбою, в результате чего «либо не является допустимым модулем, либо не предоставляет функции расширения (преобразования) в http://marklogic.com/rest-api/transform/validate пространство имен».
Мой файл 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.1 400 Неверный запрос
Тип содержимого: 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]
Я ценю любую помощь в решении этой проблемы.
Ответ №1:
Просто уберите точку с запятой после возврата $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
};
Комментарии:
1. У меня был похожий пост, но я удалил его, потому что это появилось прямо передо мной. Для ясности, ML не будет загружать файлы с синтаксическими ошибками. Ответ от rest api, а также журналы ошибок ML — ваши друзья. Хотя это немного расплывчато, оно все равно говорит вам, что сам ваш код поврежден, что дает вам возможность где-то искать.
2. Вы можете получить полную трассировку стека из REST API, перейдя в Groups — Default в приложении Admin и переключив «уровень журнала файлов» на «debug».