我想从列表中提取第一个元素$res/Name。在我的解决方案中,我获得了所有列表,而不仅仅是第一个元素,这是我写的。
for $res in /Restaurants/Restaurant
let $n := count($res/Dish)
order by $n descending
return ($res/Name)[1]
Run Code Online (Sandbox Code Playgroud)
您可以在此处看到 XML 和结果:http://www.xpathtester.com/xquery/7992b12910492f493273835e828dc386
哪里有问题?
位置过滤器是 return 子句表达式的一部分,因此您可以获得Name每个 的第一个$res。
但是您希望它适用于完整的结果。移动括号应该可以解决这个问题:
(
for $res in /Restaurants/Restaurant
let $n := count($res/Dish)
order by $n descending
return $res/Name
)[1]
Run Code Online (Sandbox Code Playgroud)