Нужен синтаксис XQuery для поведения if Exists() в API поиска

У меня есть требование, что мы должны выполнять поиск по логлогии только в документах, которые имеют <associated-bundles> элемент в его активной версии.

Ниже наша структура документа

 <document document-status='active'>
 <file> 
     <version id=1 version-status='active'>
         <file-name/>
         <associated-bundles>
            <bundle doc-id="100082"></bundle>
            <bundle doc-id="100083"></bundle>
            <bundle doc-id="100000"></bundle>
         </associated-bundles>
         ...
         <file-level-visits>3</file-level-visits>
     </version>
     <version id=2 version-status='archived'>
         <file-name/>
         <uploaded-by>
         ...
         <file-level-visits>2</file-level-visits>
     </version>
     <version id=3 version-status='archived'>
         <file-name/>
         <uploaded-by>
         ...
         <file-level-visits>4</file-level-visits>
     </version>
 </file>

Учитывая приведенную выше структуру документа, мне нужно выполнять поиск только по документам, которые имеют <associated-bundles> элемент в их активной версии.

Примечание. В документе имеется только 1 активная версия.

Ниже приведен запрос для поиска только в активном файле "version-status". Но в дополнение к этому я хочу включить 'ifExists' проверку <associated-bundles> для документа.

cts:element-query (xs:QName ("version"),cts:and-query ((cts:element-attribute-value-query(fn:QName("","version"), fn:QName("","version-status"), "active", ("lang=en"), 1)
)));

Пожалуйста, дайте мне знать, как этого добиться.

1 ответ

Решение

Вы можете проверить наличие элемента с помощью cts:element-query(), используя синтаксис ниже из документации:

cts:element-query(xs:QName("my-element"),cts:and-query( () ))
Другие вопросы по тегам