如何查找为回答我的Xquery查询而访问的文档?

时间:2012-09-03 20:34:01

标签: xquery

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

我找到了op:context-document()运算符,它似乎具有我想要的功能,但是,作为运算符,它不适合我。 fn:document-uri也没有这个技巧,因为它的$ arg必须是文档节点,否则返回一个空序列。

你有什么想法吗?所有的帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

collection('/path/to/documents')[ends-with(base-uri(), '.xml')]

答案 1 :(得分:0)

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

例如,使用Saxon:

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

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