1

为什么

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

什么都不返回?

4

2 回答 2

1

(0 到 3) 返回 xs 的序列:整数 0 到 3

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

ps xquery 人们说“数组”的“序列”:P

于 2012-07-29T08:04:15.310 回答
1

根据XPath 2.0 W3C 规范

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

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

for $i in (0 to 3)
 return color[4 - $i]
于 2012-07-30T13:00:44.560 回答