如何在 XQuery 1.0 中提取列表的第一个元素?

Tim*_*mmy 3 xml xpath xquery

我想从列表中提取第一个元素$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

哪里有问题?

Gun*_*her 5

位置过滤器是 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)