2017-09-06 10 views
1

マークロック検索は、アクティブなバージョンの<associated-bundles>要素を持つドキュメント内でのみ実行する必要があるという要件があります。検索アピで 'if exists()'ビヘイビアのXQuery構文が必要

以下は、当社の文書構造

<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"内でのみ検索するクエリです。しかし、これに加えて、私は文書のための<associated-bundles>の 'ifExists'チェックを含めるしたいと思います。

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) 
))); 

これを達成する方法を教えてください。あなたがドキュメントから以下の構文を使用してcts:element-query()を使用して、要素の存在を確認することができます

+0

はあなたのためにこの仕事をしましたか? –

答えて

3

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

最近では、cts:and-query(())をより簡単なcts:true-query()に置き換えることができます。 – hunterhacker

+0

ありがとうございました。私は前に真のクエリのトリックを見て、それは決して私の心を渡したことはありません。おそらく、ドキュメントを少し更新することは、この例を更新するためです。 –

+0

ドキュメントチームに更新を求めるリクエストを送信しました。 'cts:true-query'はMarkLogic 8以降で利用可能です。 –

関連する問題