1

我想通过 XQJ API 查询 eXist db。因此,我有一个 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 :)
)

或者,如果您知道集合 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 回答