我有一个带有不同目录的URI列表。是否可以从MarkLogic中的URI获取所有不同的目录?
xdmp:directory
用于不同的目的。
Example-
let $uri := "/test/abc/somepath/abc.xml"
Output should be- "/test/abc/somepath/"
任何建议??
答案 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')