需要XQuery语法,如果Exists()'搜索API中的行为

时间:2017-09-06 13:12:49

标签: marklogic

我要求我们只需要在其活动版本中包含<associated-bundles>元素的文档中执行marklogic搜索。

以下是我们的文档结构

 <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>元素的文档执行搜索。

注意:文档中只有一个活动版本。

以下是仅在活动文件&#34;版本状态&#34;内搜索的查询。但除此之外,我想要包含“ifExists&#39;检查<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 个答案:

答案 0 :(得分:3)

您可以使用cts:element-query()使用文档中的以下语法检查元素是否存在:

cts:element-query(xs:QName("my-element"),cts:and-query( () ))