动态排序xquery结果

时间:2015-10-08 10:41:03

标签: xpath xquery

我想根据xpath值动态使用升序或降序选项。

listy[1]
[[1]]
  var1 var1.2
1    1      1
str(listy[1])
List of 1
 $ :'data.frame':   1 obs. of  2 variables:
  ..$ var1  : int 1
  ..$ var1.2: int 1
listy[10]
[[1]]
  var1 var1.2
1   10     10
str(listy[10])
List of 1
 $ :'data.frame':   1 obs. of  2 variables:
  ..$ var1  : int 10
  ..$ var1.2: int 10

使用此抛出错误。

我们可以为整个" for"声明。但是当我们在哪里有更多的条件;订购和许多语句作为回报,然后它看起来代码重复只是为了升序或降序。

是否有任何选项可以在不使用条件的情况下使用" for"。

1 个答案:

答案 0 :(得分:4)

每当我不得不动态订购时,这对我来说最好。 它利用了多个订单规范。 (http://www.w3.org/TR/xquery/#id-orderby-return)这有点不同,因为订单修饰符是一个标记而不是变量或表达式,所以它很难处理。 这就是为什么你必须有两个if语句和空的else语句。

   let $order := "ascending"
    for $aRslt in ("1","2","3","4")
         order by 
         if($order eq "ascending") then $aRslt else() ascending,
         if($order eq "descending") then $aRslt else () descending
    return $aRslt