如何从MarkLogic中的文档URI获取文档目录?

时间:2019-02-08 09:26:05

标签: xquery marklogic

我有一个带有不同目录的URI列表。是否可以从MarkLogic中的URI获取所有不同的目录?

xdmp:directory用于不同的目的。

Example- 
let $uri := "/test/abc/somepath/abc.xml"
Output should be- "/test/abc/somepath/"

任何建议??

2 个答案:

答案 0 :(得分:6)

有一个实用程序功能可以执行以下操作:

import module namespace util="http://marklogic.com/xdmp/utilities" at "/MarkLogic/utilities.xqy";
util:basepath("/test/abc/somepath/abc.xml")

它使用fn:replace并在边缘情况下加上一些逻辑。

答案 1 :(得分:4)

没有内置功能,但是您可以根据想要的严格程度,以几种不同的方式从URI解析目录值。

fn:string-join(fn:tokenize('/test/abc/somepath/abc.xml', '/')[1 to last()-1], '/')||'/'

或者如果您只想在字符串以/开头时进行匹配:

replace('/test/abc/somepath/abc.xml', '^((/[^/]+)*/)[^/]*$', '$1')