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

时间:2016-01-26 19:26:56

标签: xml xpath xquery

我想从列表data databases; infile datalines DSD; array databases(1:5) $15 CHR1-CHR5; input databases(*); datalines; Oracle, SQL Server, PostgreSQL, MySQL, DB2 ; run; 中提取第一个元素。在我的解决方案中,我获得了所有列表,而不仅仅是第一个元素,这是我写的。

$res/Name

您可以在此处看到XML和结果:http://www.xpathtester.com/xquery/7992b12910492f493273835e828dc386

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

位置过滤器是return子句表达式的一部分,因此每个Name得到第一个$res

但是您希望它适用于完整的结果。移动括号应该解决:

(
  for $res in /Restaurants/Restaurant
  let $n := count($res/Dish)
  order by $n descending
  return $res/Name
)[1]

答案 1 :(得分:0)

如果你能够使用XQuery 3.0,它就知道辅助函数fn:head($sequence)fn:tail($sequence)

示例:

head(1 to 10)
1
tail(1 to 10)
2 3 4 5 6 7 8 9 10