我想通过XQJ API查询eXist数据库。因此,我有一个XQuery文件,我想应用于数据库的不同集合内的几个不同的文档。
我的问题是,如何设置文档/集合的路径?我想仅在特定文档/集合上应用XQuery,并且不能直接在XQuery文档中设置路径(使用doc('path / to / doc')函数),因为我想将相同的XQuery应用于几个具有不同路径的文件。
我可以将Java变量绑定到Xquery表达式,但必须有一种更优雅的方式来使用XQJ API来实现此任务。希望你能帮助我一点点。
答案 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标准,但其他用户似乎非常想要此功能