如何在 BaseX 中获取子路径段?

How to get sub path segments in BaseX?

假设我在名为 "myDB":

的 BaseX 数据库中拥有这些资源
1/A/D/01.xml
1/A/E/02.xml
1/B/F/03.xml
1/B/G/04.xml
2/C/H/05.xml

现在我想要此数据库中特定路径的所有可用子路径段。

示例:

getSubPaths('myDB', '1/')

应该return顺序

('A', 'B')

有 XQuery 函数或其他方法吗?

这是一种方法:

declare function local:getSubPaths(
  $db    as xs:string,
  $path  as xs:string
) as xs:string* {
  distinct-values(
    for $doc in db:open($db, $path)
    return db:path($doc)
        => substring-after($path)
        => replace('/.*', '')
  )
};

根据您的确切要求,该函数可能需要更新以也接受可能不以斜杠结尾的路径,而不是 return 离开(文件名)等