1

XQJ API を介して eXist データベースにクエリを実行したいと考えています。したがって、データベースのさまざまなコレクション内のいくつかの異なるドキュメントに適用したい XQuery ファイルがあります。

私の質問は、ドキュメント/コレクションへのパスを設定するにはどうすればよいですか? XQuery を特定のドキュメント/コレクションにのみ適用したいのですが、同じ XQuery を複数のドキュメント/コレクションに適用したいので、(doc('path/to/doc') 関数を使用して) XQuery ドキュメントにパスを直接設定することはできません。異なるパスを持つファイル。

Java 変数を Xquery 式にバインドすることはできますが、XQJ API を使用してこのタスクを達成するには、より洗練された方法が必要です。少しでもお役に立てれば幸いです。

4

1 に答える 1

1

特定のドキュメント URI が事前にわかっている場合は、一連の URI を xs:string シーケンスとしてバインドできます。その後、XQuery 式でそれらを反復処理し、必要に応じて各 URI に対して操作を実行できます。

declare variable $uris as xs:string* external;

for $uri in $uris
return (
 (: perform operation against $uri :)
)

もしくはコレクションウリがわかれば、

declare variable $collection-uri as xs:string external;

for $document-node in fn:collection($collection-uri)
return (
  (: perform operation against document-node() :)
)

eXist XQJ API の将来のバージョンでは、コレクションをデフォルト コンテキストとして設定できるようになります。これは、XQJ 標準と XQuery 1.0 / 3.0 標準の両方に反しますが、他のユーザーはこの機能を非常に強く望んでいるようです。

于 2012-10-05T11:03:16.393 に答える