for $i in cts:search(fn:collection()/article, $query)
let $snippet :=
search:snippet( $i,.....)
order by if ($randomize) then ()
else if($sort-by = "ascending") then
xs:date($i/date_posted), cts:score($i)
else xs:date($i/date_posted) descending, cts:score($i) descending
return
element{"article"}
{ .....
.....
.....
}
问题:
在上面的x-query语句中,order by子句的条件是if($randomize) then ()
否则提供的输出将是降序的。
我 要求根据用户提供的排序类型我想以升序或降序的方式提取结果。
但是对于上面编写的代码,我的x-query语句将不会验证。
先谢谢,
〜PRASHANT
答案 0 :(得分:2)
不幸的是,XQuery中的排序规范是静态的,甚至比XSLT中的更多。如果要在升序或降序排序之间动态切换,唯一的方法是反转排序键。数字很容易 - 只需使用 - (KEY)而不是(KEY)。日期也不太难 - 从未来某个固定日期减去日期(嗯,实际上是任何日期)。我想不出为字符串做任何方便的方法,但幸运的是你似乎没有使用字符串。