Требование:
Объединение запроса cts/search
с запросом XPath.XPath - это неизвестная строка ввода пользователя.
Функция search:resolve
принимает «Объект cts: запрос, сериализованный запрос cts: или структурированный запрос (search: query)».( Источник )
Вопрос:
Есть ли API для преобразования XPath в cts или структурированный запрос, чтобы я мог объединить XPathи другие поисковые запросы?
Неработающий пример:
xquery version "1.0-ml";
let $doc :=
<test>
<name>Mike</name>
<age>20</age>
</test>
return xdmp:document-insert('mike.xml', $doc);
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
let $xpath := '/test[name="Mike"]'
let $cts-query := cts:and-query(
xpathToCts($xpath), (: Somehow convert XPath to cts query here :)
cts:element-value-query(xs:QName("age"), "20")
)
return search:resolve($cts-query)
Если в настоящее время нет способа преобразовать строку XPath в search
совместимый формат, есть ли другой способ объединитьXPath и cts / поисковые запросы?
Любая помощь будет принята с благодарностью!
Обновление 1 :
Я попытался использовать предложенную опцию searchable-expression
, но столкнуться с другой проблемой, объединяющей его с extract-document-data
:
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:resolve(
cts:element-value-query(xs:QName("name"), "Mike"),
<options xmlns="http://marklogic.com/appservices/search">
<searchable-expression>/test[age = 20]</searchable-expression>
<extract-document-data>
<extract-path>/test/name</extract-path>
</extract-document-data>
</options>
)
Этот запрос возвращает следующие извлеченные данные:
<search:extracted-none>
</search:extracted-none>
Хотя без выражения для поиска я получаю ожидаемое:
<search:extracted kind="element">
<name>Mike</name>
</search:extracted>
Если я не ошибаюсь, выражение для поиска ведет себя так же, как и первый параметр cts:search
.Читая документы, он говорит:
Например, если вы укажете // p, тогда будут возвращены элементы p, соответствующие критериям поиска.
Таким образом, получающиеся узлыограничено поисковым выражением и всеми узлами ниже, что не то, что я хочу.