我的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表达。
答案 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>