Xpath 更简单的XQuery语句

Xpath 更简单的XQuery语句,xpath,xquery,Xpath,Xquery,我问自己是否可以让下面的陈述更简单一些? 你能帮我吗 <Vorlesungsverzeichnis> { for $sws in distinct-values(doc('uni')//Vorlesung/SWS) order by $sws return <Vorlesungen SWS="{$sws}"> { for $v in doc('uni')//Vorlesung[SWS=$sws] order by $v/Titel return


我问自己是否可以让下面的陈述更简单一些? 你能帮我吗

<Vorlesungsverzeichnis>
{
for $sws in distinct-values(doc('uni')//Vorlesung/SWS) 
order by $sws
return 
 <Vorlesungen SWS="{$sws}">
 {
   for $v in doc('uni')//Vorlesung[SWS=$sws]
   order by $v/Titel
   return <Vorlesung VorlNr="{$v/@VorlNr}" Titel="{$v/Titel}"></Vorlesung>
 }
 </Vorlesungen>
}
</Vorlesungsverzeichnis>

{
对于不同值的$sws(doc('uni')//Vorlesung/sws)
$sws订购
返回
{
对于文档中的$v('uni')//Vorlesung[SWS=$SWS]
按$v/滴度订购
返回
}
}
源XML可用,您也可以尝试查询


谢谢你的帮助

在XQuery 3.0中,您可以执行以下操作:

<Vorlesungsverzeichnis>
{
  for $v in doc('uni')//Vorlesung
  order by $v/Titel
  group by $sws := $v/SWS
  return <Vorlesungen SWS="{$sws}">{$v}</Vorlesungen>
}
</Vorlesungsverzeichnis>

{
对于文件('uni')//Vorlesung中的$v
按$v/滴度订购
按$sws分组:=$v/sws
返回{$v}
}

在XQuery 3.0中,您可以执行以下操作:

<Vorlesungsverzeichnis>
{
  for $v in doc('uni')//Vorlesung
  order by $v/Titel
  group by $sws := $v/SWS
  return <Vorlesungen SWS="{$sws}">{$v}</Vorlesungen>
}
</Vorlesungsverzeichnis>

{
对于文件('uni')//Vorlesung中的$v
按$v/滴度订购
按$sws分组:=$v/sws
返回{$v}
}

我认为这是再简单不过的了。它似乎做得很好,读起来也很简单,那么为什么您想要一个更简单的查询呢?我认为没有更简单的方式来表达它。如果您担心性能,那么一个幼稚的处理器在这个查询上会有O(n^2)的时间,但是一个好的处理器会进行连接优化-在某些情况下,这取决于您手动创建正确的索引。Hm k,我认为分组方式会更好。不过,如果你喜欢,我也可以;)我认为再简单不过了。它似乎做得很好,读起来也很简单,那么为什么您想要一个更简单的查询呢?我认为没有更简单的方式来表达它。如果您担心性能,那么一个幼稚的处理器在这个查询上会有O(n^2)的时间,但是一个好的处理器会进行连接优化-在某些情况下,这取决于您手动创建正确的索引。Hm k,我认为分组方式会更好。不过,如果你喜欢,我也可以;)