xdmp:directory 完整网址

xdmp:directory for full urls

是否有类似于 xdmp:directory 的东西用于遍历具有不以“/”开头的 uris 的文档,即“http://something.other.com/documents/”?或者有什么方法可以获取文档 uri 与正则表达式匹配的所有文档?

例如,我想拉取文档:

cts:uri-match 应该正是您要查找的内容。您可以在其中放置一个通配符表达式,例如 cts:uri-match('/myDirectory/sub-dir/*.xml')。这将 return 一个 URI 列表作为字符串,然后您可以通过执行以下操作来大量获取这些文档(注意:fn:doc() 可以采用零到多个 uri):

let $uris as xs:string* := cts:uri-match("/you/directory/structure/*.xml")
let $docs as document-node()* := fn:docs($uris)
return $docs

根据下面 Tyler 的评论,如果可能,您应该在此搜索中传递 cts:query 限定符,例如:

let $uris as xs:string* := cts:uri-match("/your/directory/structure/*.xml", (), cts:directory-query("/your/directory/structure/", "infinity"))
let $docs as document-node()* := fn:docs($uris)
return $docs

在上面的示例中,cts:directory-query 将范围缩小了一点,请注意 "infinity" 会将所有子目录带到无限级别。

或者,如果它们都在您想要的目录(或多个目录)下,并且不需要通配符来进一步限定文件名等,您可以这样更好:

cts:search(fn:collection(), cts:directory-query("/some-dir/", "infinity"))

但如果你想使用正则表达式式的搜索,第一个选项肯定是你的朋友。

http://docs.marklogic.com/7.0/cts:uri-match