Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath XQuery未获取Order by子句的验证_Xpath_Xquery - Fatal编程技术网

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"}
{ .....
  .....
  .....
}