提问人:Aviator 提问时间:10/16/2023 最后编辑:Mads HansenAviator 更新时间:10/17/2023 访问量:43
从 xpath 序列返回匹配的属性值
Returning matching attribute value from xpath sequence
问:
我正在尝试从以下查询返回的值列表中获取属性值:-
xquery version "1.0-ml";
let $bkp_location := xdmp:filesystem-directory("/etc/")//dir:entry/dir:pathname/string(fn:ends)
return $bkp_location
上面的查询返回三个值
/etc/users
/etc/readme/file-permission
/etc/recovery-failures
我只想将 /etc/readme/file-permission 捕获到变量中。我该怎么做?
答:
0赞
Mads Hansen
10/17/2023
#1
如果要查找以 () “
permission” 结尾的文件,可以应用谓词来过滤该路径序列:
xdmp:filesystem-directory("/etc/")//dir:entry/dir:pathname/string()[ends-with(., "permission"]
如果您只是作为 XPath 的最后一步应用,那么它将返回布尔值,而不是使用它来过滤序列。ends-with()
您还可以在 FLWOR 的子句中使用 for 循环并测试 if:ends-with()
where
for $path in xdmp:filesystem-directory("/etc/")//dir:entry/dir:pathname/string()
where ends-with($path, "permission"]
return $path
评论
/etc/readme/file-permission
string(fn:ends)
fn:ends-with()