что такое XQuery для импорта пространства имен модуля в MarkLogic - PullRequest
1 голос
/ 17 января 2020

Что такое XQuery для импорта пространства имен модуля в MarkLogi c? Как связать пространство имен с префиксом admin?

import module namespace admin="http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy"; 

Я пробовал таким образом, но получаю ошибку.

ServerEvaluationCall forestDataDirCall = 
  client
   .newServerEval()
   .xquery("xquery version \"1.0-ml\";\r\n" + 
           "xdmp:with-namespaces(admin,http://marklogic.com/xdmp/admin)

1 Ответ

0 голосов
/ 17 января 2020

Оператор импорта, на который вы ссылались, делает две вещи:

  1. объявляет пространство имен "http://marklogic.com/xdmp/admin", привязанное к префиксу пространства имен admin
  2. импортирует библиотечный модуль "/MarkLogic/admin.xqy", связанный с этим пространством имен admin, так что на его функции можно ссылаться с помощью префикса admin.

Вы можете также просто объявите пространство имен и свяжите его с префиксом пространства имен

declare namespace admin="http://marklogic.com/xdmp/admin"; 

Однако тогда у вас не будет этих библиотечных функций, доступных для использования.

Похоже, что этот вопрос связан на один из ваших других вопросов. Чтобы оценить код с помощью функций администратора, вам нужно включить оператор импорта в XQuery, который вы хотите оценить:

ServerEvaluationCall forestDataDirCall = client.newServerEval()
  .xquery('import module namespace admin="http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy"; admin:forest-get-data-directory(admin:get-configuration(), admin:forest-get-id(admin:get-configuration(), "' + forestName +'"))');
...