FLWOR表达式是XQuery核心语法,由for、let、where、order by和return五个子句组成,用于查询、过滤、排序和构造XML数据;各子句有严格顺序与约束,必须含for或let之一及return,where和order by可选。
FLWOR 表达式是 XQuery 的核心语法结构,用于声明式地查询、过滤、排序和构造 XML 数据。它不是单个语句,而是一套组合子句的表达式框架,读作 “flower”,由五个关键部分组成:for、let、where、order by 和 return。
FLWOR 各子句的作用与使用要点
每个子句承担明确角色,协同完成数据处理:
-
for:必须存在(或与 let 至少其一),用于遍历节点序列或原子值序列,类似 SQL 的 FROM;每次迭代绑定一个变量到当前项,支持多个并行迭代(如
for $b in //book, $a in $b/author) -
let:用于一次性变量绑定,不产生新迭代,适合中间计算或重用表达式(如
let $p := $book/price * 0.9),相当于 SQL 中的 SELECT 列别名或 CTE 中的临时定义 - where:可选,对 for 生成的每一项做布尔判断,仅保留满足条件的结果,功能等同于 SQL 的 WHERE 子句
-
order by:可选,指定排序依据,支持升序(
ascending)、降序(descending)及 collation;可多字段排序,如order by $book/@year descending, $book/price ascending - return:必须存在,定义最终输出内容;可构造新 XML 元素、返回文本、序列或混合结果,对应 SQL 的 SELECT 投影部分
合法 FLWOR 的基本约束
语法合法性有硬性要求,不能随意省略: