2

我有以下目标。我想在执行任何类型的 Xquery 或 XPath 时查找哪些文档包含我的数据。换句话说,我需要为给定查询提供结果数据的每个文档。我尝试在 eXist-db 环境中执行此操作,但我认为 Xquery 级别应该有一些东西。

我发现 op:context-document() 运算符似乎具有我想要的功能,但是,作为运算符,它对我不可用。fn:document-uri 也不能解决问题,因为它的 $arg 必须是一个文档节点,否则它返回一个空序列。

你有什么想法吗?所有的帮助都受到高度赞赏。

4

2 回答 2

1

使用标准的 XPath/XQuery 函数collection()

例如,使用撒克逊语:

collection('file:///a/b/c/d?select=*.xml')[yourBooleanExpression]

选择所有 XML 文档的文档节点,驻留在文件系统的/a/b/c/d目录中,满足您的条件(yourBooleanExpression评估为true()

于 2012-09-03T20:48:52.090 回答
1

fn:base-uri()可能会有所帮助;它返回节点的基本 URI 属性:

for $d in doc('....')/your[query]
return base-uri($d)

您还可以使用它来过滤特定类型的文档:

collection('/path/to/documents')[ends-with(base-uri(), '.xml')]
于 2012-09-03T21:05:35.573 回答