XML 是否可以在一个 XQuery 中使用两个 returns?

Is it possible for XML use two returns in one XQuery?

所以问题是哪位导演至少执导过两部电影,电影的名字是什么。

我知道如何获取事实,但我无法在没有不必要的迭代的情况下查询 return 这两件事。

我的代码如下所示:

let $x := doc("/info.../videos.xml")/result/videos/video

for $director in distinct-values($x/director)
where count($x[director eq $director]) > 2
for $title in $x
where $title/director = $director
return ($director, $title/title)

现在这个 return 有 1 个导演和 3 个头衔,但是结果看起来像这样:

导演 标题 1

导演 标题 2

导演 标题 3

这种格式能不能搞定

导演

标题 1

标题2

标题 3

使用相同的代码?例如。通过某种方式在一个查询中使用两个单独的 returns?

是的,这是可能的。第二个表达式可以跟在第一个结果序列中的 $director 之后:

for $director in distinct-values($x/director)
where count($x[director eq $director]) > 2
return ($director,  
  for $title in $x
  where $title/director = $director
  return $title/title)

您还可以将标题查询的结果存储在变量中:

for $director in distinct-values($x/director)
let $titles := 
  for $title in $x
  where $title/director = $director
  return $title/title
where count($x[director eq $director]) > 2
return ($director, $titles)