向后迭代XQuery序列

时间:2012-07-29 06:35:57

标签: xquery

为什么

  for $i in (0 to 3)
      return element color {"red"}

返回

<color>red</color>
<color>red</color>
<color>red</color>
<color>red</color>

但是反转迭代顺序

  for $i in (3 to 0)
      return element color {"red"}

什么都不返回?

2 个答案:

答案 0 :(得分:1)

(0到3)返回xs:整数0到3

的序列

...但是(3到0)返回空序列! (所以它在你的第二个例子中迭代零次)

P.S。 xquery folk对“数组”说“序列”:P

答案 1 :(得分:1)

根据 XPath 2.0 W3C Specification

  

范围表达式可用于构造序列   连续整数。 to运算符的每个操作数都是   转换为好像它是具有预期的函数的参数   参数类型xs:整数?如果任一操作数是空序列,或   如果从第一个操作数派生的整数大于   从第二个操作数派生的整数,范围的结果   表达式是一个空序列

你可以简单地使用这样的东西

for $i in (0 to 3)
 return color[4 - $i]