如何设置XQJ连接的默认/基本集合

时间:2012-10-04 10:13:34

标签: collections xquery exist-db

我想通过XQJ API查询eXist数据库。因此,我有一个XQuery文件,我想应用于数据库的不同集合内的几个不同的文档。

我的问题是,如何设置文档/集合的路径?我想仅在特定文档/集合上应用XQuery,并且不能直接在XQuery文档中设置路径(使用doc('path / to / doc')函数),因为我想将相同的XQuery应用于几个具有不同路径的文件。

我可以将Java变量绑定到Xquery表达式,但必须有一种更优雅的方式来使用XQJ API来实现此任务。希望你能帮助我一点点。

1 个答案:

答案 0 :(得分:1)

如果您事先知道特定文档URI,则可以将一堆URI绑定为xs:string序列,然后您可以在XQuery表达式中迭代它们,根据需要对每个URI执行操作。

declare variable $uris as xs:string* external;

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

或者,如果你知道集合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标准,但其他用户似乎非常想要此功能