XQuery的此输出正确吗?

时间:2018-07-15 15:19:38

标签: xml xquery

我正在XQuery中练习,并且有一些问题。给定XQueries的这些输出正确吗?

let $i := ("a","b"), $j := 1 to 2
return ($i,$j)

输出:

a b 1 2

for $i in ("a","b"), $j in 1 to 2
return ($i,$j)

输出:

a 1
a 2
b 1
b 2

有人可以确认这些结果正确吗?

1 个答案:

答案 0 :(得分:1)

为清晰起见,假设您已经格式化了响应,那么,这两个FLWOR语句的输出是正确的。

第一个表达式创建两个具有一系列值的变量。

let $i := ("a","b"), $j := 1 to 2

等效于:

let $i := ("a","b"), $j := (1, 2)

因此return ($i,$j)等效于:

( ("a", "b"), (1, 2) )

Sequences never contain other sequences; if sequences are combined, the result is always a “flattened” sequence.起,结果为以下顺序:

("a", "b", 1, 2)

第二个表达式

for $i in ("a","b"), $j in 1 to 2
return ($i,$j)

等效于编写以下嵌套的for循环:

for $i in ("a","b")
return
  for $j in (1, 2)
  return ($i, $j)

产生:

( ("a", 1), ("a", 2), ("b", 1), ("b", 2) )

然后将其展平为以下值序列:

("a", 1, "a", 2, "b", 1, "b", 2)