每个字母创建结果窗口

时间:2015-11-06 12:35:22

标签: xquery

我的XML文件是here

我想通过以下方式按字母顺序获取所有电影的结果:

<window>
<title>Alpha</title>
<title>Abel</title>
<window>
<title><babylon</title>
...
<window>
...
<window>
...

我在以下代码中使用了翻滚功能:

for tumbling window $w in db:open("movies","movies.xml")/movies/movie/title
    start at $s when fn:true()
    only end at $e when not starts-with($e,substring($s, 1, 1))
return <window>{ $w/../title }</window>

基本上,我试图提取每个单词的第一个字符并将它们组合在一起。

然而,它表示不完整的FLWOR表达。

1 个答案:

答案 0 :(得分:0)

分组在这里更合适:

for $title in //title
  order by $title
  group by $g := substring($title, 1,1)
return element { $g } {
  $title
}

如果您真的想使用翻滚,可以使用开始和下一个变量来创建组:

for tumbling window $w in //title
  start $first when true()
  end next $next when substring($first, 1,1) != substring($next,1,1)
return <window>{ $w }</window>