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

时间:2017-03-27 13:49:50

标签: basex

假设我在名为“myDB”的BaseX数据库中拥有这些资源:

i=0

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

示例:

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/')

是否有XQuery函数或其他方法来执行此操作?

1 个答案:

答案 0 :(得分:1)

这是一种方法:

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('/.*', '')
  )
};

根据您的具体要求,可能需要更新该函数以接受可能不以斜杠结尾的路径,不返回叶子(文件名)等。