Xml 如何在xquery中首先按特定值排序?
如何在xQuery中首先按特定值排序 例如:Xml 如何在xquery中首先按特定值排序?,xml,xquery,Xml,Xquery,如何在xQuery中首先按特定值排序 例如: <xml> <b> <msg>A</msg> <val>5</val> </b> <b> <msg>B</msg> <val>1</val> </b> <b> <
<xml>
<b>
<msg>A</msg>
<val>5</val>
</b>
<b>
<msg>B</msg>
<val>1</val>
</b>
<b>
<msg>C</msg>
<val>3</val>
</b>
<b>
<msg>K</msg>
<val>2</val>
</b>
<b>
<msg>D</msg>
<val>3</val>
</b>
</xml>
A.
5.
B
1.
C
3.
K
2.
D
3.
我想基于排序值进行获取,但列表中的第一个值应该是3。您可以在order by子句中编写一个表达式,这样您就可以执行类似操作(尽管可能有更好的方法):
您可以在ORDERBY子句中编写一个表达式,这样您就可以这样做(尽管可能有更好的方法):
你的价值观似乎都是自然数。然后,您可以选择一个小于自然数中所有其他值的值——例如,
-1
。如果值为3
,则将其替换为-1
,否则使用正常值进行排名
中的$b//b
设$rank:=如果($b/val=3),则-1否则$b/val/number()
按$rank升序排序
返回$b
您没有给出任何关于预期输出的提示。如果您只需要数字或任何输出,只需修改return语句。您的值似乎都在自然数的集合中。然后,您可以选择一个小于自然数中所有其他值的值——例如,
-1
。如果值为3
,则将其替换为-1
,否则使用正常值进行排名
As suggested by Ewout Graswinckel, I followed the steps. It worked. Thanks a lot.
We can order by more "based-on-condition" by adding ","
such as like this -
(for $x in (doc(''))
order by if ($x//val = 3) then (0) else (1),
if (contains($x//msg, 'A')) then (0) else (1)
return $x
)
So after val = 3 , next order by will be anything which contains 'A'.
中的$b//b
设$rank:=如果($b/val=3),则-1否则$b/val/number()
按$rank升序排序
返回$b
您没有给出任何关于预期输出的提示。如果只需要数字或任何输出,只需修改return语句即可
As suggested by Ewout Graswinckel, I followed the steps. It worked. Thanks a lot.
We can order by more "based-on-condition" by adding ","
such as like this -
(for $x in (doc(''))
order by if ($x//val = 3) then (0) else (1),
if (contains($x//msg, 'A')) then (0) else (1)
return $x
)
So after val = 3 , next order by will be anything which contains 'A'.