cts:and-query
同じノード内の 2 つの属性 に対して実行したい。cts:and-query
同じノードではなく、ドキュメント内のテスト条件を個別に検索しています。
検索を制限して同じノードに適用する方法はありますか?
cts:and-query
同じノード内の 2 つの属性 に対して実行したい。cts:and-query
同じノードではなく、ドキュメント内のテスト条件を個別に検索しています。
検索を制限して同じノードに適用する方法はありますか?
cts:near-query()
XML構造によっては、を使用する代わりに、距離がゼロのを使用してこれを実行できる場合がありますcts:and-query()
。少し前に、クエリに近い距離についての投稿を書きました。つまり、距離は要素内の単語に依存しますが、属性内の単語の影響を受けません。これでうまくいくはずです:
cts:near-query(
(cts:element-attribute-value-query($element-qname, $attr1-qname),
cts:element-attribute-value-query($element-qname, $attr2-qname)),
0
)
element-level
ある要素の属性を別の要素の属性から分離する単語がない場合、このアプローチは機能しないことに注意してください。例えば:
<doc>
<stuff a="1" b="2">some text</stuff>
<stuff a="3" b="4">some other text</stuff>
</doc>
/doc/stuff\[1\]
stuff要素内のテキストは、の属性との属性の間にある程度の距離を提供し/doc/stuff\[2\]
ます。a属性とb属性の間に距離はありません。/doc/stuff\[1\]
stuff要素にテキストがない場合、の属性との属性の間に距離はありません/doc/stuff\[2\]
。
次の 2 番目の例で説明されているように、and-query を element-query 内にラップします。
http://docs.marklogic.com/cts:element-query?q=cts:element-query
直接要素自体に限定する必要はありません。子孫も一致に含まれますが、コンテンツ構造によってはこれで十分な場合があります。
そうでない場合は、XPath 述語を使用して、検索結果から誤検出を除外します。検索の合計などを数えるのは難しくなりますが、少なくとも正しい結果が得られます。
チッ!