У нас есть такой xml
<paper>
<title>blue</title>
<description>red and blue</description>
<headline>red color pen</headline>
<elm1>
<term>abc</term>
</elm1>
<elm2>
<term>abc</term>
<elm2>
</paper>
Мы хотим запустить запрос Marklogic с полным документом, где мы хотим выделить слово «красный».
используется поиск: поиск для получения данных, затем мы вызываем cts: Highlight, чтобы выделить слово «красный» в xml
он отлично работает
Теперь я хочу искать только в определенном элементе, то есть в описании, он должен выделять «красный» только в элементе описания, как это реализовать?





Либо оберните текущий запрос в cts:element-query:
cts:element-query(xs:QName('description'), cts:word-query('red'))
или используйте cts:element-word-query:
cts:element-word-query(xs:QName('description'),'red')
Оба запроса принимают последовательность в качестве первого аргумента. Если вам нужна вложенность, просто вложите больше элементов-запросов.
У нас есть еще 2 сценария. 1. пользовательский поиск по запросу "физика и химия", так что какие бы результаты не были получены, должна быть выделена полная фраза, как это сделать? мы не можем разделить и выделить. 2. теперь, если я ищу «abc» только в элементе /elm1/term, он работает, теперь при реализации выделения слова с использованием запроса элемента «abc» в обоих узлах xml подсвечивается, поскольку оба имеют одинаковое имя элемента, как реализовать выделение здесь ?
Спасибо, wst, за быстрый ответ. Хорошо, проверю, что, если мне нужно сделать это для 2/3 элементов с тем же результатом?