gpt4 book ai didi

没有 FLWOR 的 xquery 括号

转载 作者:行者123 更新时间:2023-12-02 00:43:17 25 4
gpt4 key购买 nike

嗨,我有一个有点蹩脚的问题,但找不到答案。

如果我将构造函数括号留空会怎样?

例如

{data(doc("somedata.xml")//node[0])}

我的意思是,我知道会发生什么,但在解析时它被认为是什么?

像吗?

{
for $i in "0"
return
data(doc("somedata.xml")//node[0])
}

最佳答案

一个常见的误解是任何 XQuery 都是 FLWOR 表达式。当人们从 SQL 的角度来处理 XQuery,将其视为 SELECT 时,就会产生这种误解。

事实并非如此; FLWOR 表达式在很多方面只是另一种表达式。 FLWOR 表达式可能作为 SQL 表达式执行,但不一定是这种情况。

XQuery 可以被视为一种函数式编程语言(如 Haskell),它恰好具有一些声明性结构(如 where 和 order by)。

表达式 1+2 只是一个将数字 1 和 2 相加的 XQuery 表达式,它周围不需要隐式 FLWOR 表达式。

如果您想在完全基于元组的代数中考虑 XQuery,那么您可以将输入视为单个空元组。我指的是以下内容。

看看这个查询:

for $x in ...
for $y in ...
where $x/@name=$y/@name
return $x

如果您在基于元组的代数中考虑这一点,则 for 表达式的输入将是定义 $x$y 的元组流。很明显这与数据库查询有何关系。这对应于一个包含两列 $x$y 的表格,每对具有相同名称的行对应一行。

您可以考虑以下查询

//foo

就像在没有值的单个元组上操作一样。这有点像没有 for 或 let 的 FLWOR 表达式(如果允许的话,只是一个 return 表达式)。在关系领域,这将是一个没有列和一行的表。然而,这只是一个逻辑抽象,大多数(如果不是全部)XQuery 实现将其表示为一个表达式。

关于没有 FLWOR 的 xquery 括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com