Xpath XQuery未获取Order by子句的验证
问题:Xpath XQuery未获取Order by子句的验证,xpath,xquery,Xpath,Xquery,问题: 在上面的x-query语句中,orderby子句有一个条件,即if($randomize)then(),否则提供的输出将以降序方式进行 我 有一个要求,根据用户提供的排序类型,我希望以升序或降序的方式拉出结果 但是对于上面编写的代码,我的x-query语句将不会验证 提前感谢, ~Prashant不幸的是,XQuery中的排序规范是静态的,甚至比XSLT中更为静态。如果要在升序或降序排序之间动态切换,唯一的方法是反转排序键。这对于数字来说很容易——只需使用-(键)而不是(键)。日期也不太
在上面的x-query语句中,orderby子句有一个条件,即
if($randomize)then()
,否则提供的输出将以降序方式进行
我
有一个要求,根据用户提供的排序类型,我希望以升序或降序的方式拉出结果
但是对于上面编写的代码,我的x-query语句将不会验证
提前感谢,~Prashant不幸的是,XQuery中的排序规范是静态的,甚至比XSLT中更为静态。如果要在升序或降序排序之间动态切换,唯一的方法是反转排序键。这对于数字来说很容易——只需使用-(键)而不是(键)。日期也不太难——从将来某个固定的日期中减去日期(实际上是任何日期)。我想不出任何方便的方法来处理字符串,但幸运的是,您似乎没有使用字符串。似乎对于字符串,适合降序排序的键是:
translate(,,$vAlpha,reverse($vAlpha))
其中$vAlpha是按排序顺序使用的“字母表”——可能按代码点排序的值通常会“起作用”。
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"}
{ .....
.....
.....
}