Нужен синтаксис 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( () ))