marklogic中的分层目录结构
Hierarchical directory structure in marklogic
X-Query 或 Node-JS 客户端API中是否有任何函数可以获取 Marklogic 9 中的目录列表或文件层次视图?
MarkLogic 中的目录只是文档 URI 反映的约定。
数据库中不存在与目录对应的资源(WebDav 的边缘情况除外)。
正如 Tamas 在他的评论中暗示的那样,您可以编写一个 XQuery 或 JavaScript 函数来
- 从 URI 词典中读取 URI
- 排序
- 将 / 上的 URI 标记为 URI 步骤
- 对构建层次结构的步骤进行分组
希望对您有所帮助,
developer.marklogic.com 上有一个食谱应该有帮助:http://developer.marklogic.com/recipe/list-directory-count
declare function local:map-uris($uris as xs:string*)
{
let $map := map:map()
let $_ :=
for $uri in $uris
let $toks := fn:tokenize($uri, "/")
for $t at $i in fn:subsequence($toks, 1, fn:count($toks) - 1)
let $key := fn:string-join($toks[1 to $i], "/") || "/"
let $count := (map:get($map, $key), 0)[1]
return map:put($map, $key, ($count + 1) )
return $map
};
local:map-uris(cts:uris())
X-Query 或 Node-JS 客户端API中是否有任何函数可以获取 Marklogic 9 中的目录列表或文件层次视图?
MarkLogic 中的目录只是文档 URI 反映的约定。
数据库中不存在与目录对应的资源(WebDav 的边缘情况除外)。
正如 Tamas 在他的评论中暗示的那样,您可以编写一个 XQuery 或 JavaScript 函数来
- 从 URI 词典中读取 URI
- 排序
- 将 / 上的 URI 标记为 URI 步骤
- 对构建层次结构的步骤进行分组
希望对您有所帮助,
developer.marklogic.com 上有一个食谱应该有帮助:http://developer.marklogic.com/recipe/list-directory-count
declare function local:map-uris($uris as xs:string*)
{
let $map := map:map()
let $_ :=
for $uri in $uris
let $toks := fn:tokenize($uri, "/")
for $t at $i in fn:subsequence($toks, 1, fn:count($toks) - 1)
let $key := fn:string-join($toks[1 to $i], "/") || "/"
let $count := (map:get($map, $key), 0)[1]
return map:put($map, $key, ($count + 1) )
return $map
};
local:map-uris(cts:uris())