我正在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
有人可以确认这些结果正确吗?
答案 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) )
("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)