我有以下目标。我想找到,在执行任何类型的Xquery或XPath时,哪些文档包含我的数据。换句话说,我需要为我提供给定查询的结果数据的每个文档。我尝试在eXist-db环境中这样做,但我想在Xquery级别上应该有一些东西。
我找到了op:context-document()运算符,它似乎具有我想要的功能,但是,作为运算符,它不适合我。 fn:document-uri也没有这个技巧,因为它的$ arg必须是文档节点,否则返回一个空序列。
你有什么想法吗?所有的帮助都非常感谢。
答案 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()
)