目录

XQuery FLWOR表达式


什么是FLWOR?

FLWOR(发音为"flower")是"For, Let, Where, Order by, Return" 的缩写。

  • For- 选择节点序列
  • Let- 将序列绑定到变量
  • Where- 过滤节点
  • Order by- 对节点进行排序
  • Return- 返回什么(每个节点评估一次)

XML 示例文档

我们将在下面的示例中使用 "books.xml" 文档(与上一章中相同的 XML 文件)。

在浏览器中查看 "books.xml" 文件.


如何使用 FLWOR 从 "books.xml" 选择节点

看下面的路径表达式:

doc("books.xml")/bookstore/book[price>30]/title

上面的表达式将选择 book 元素下的所有 title 元素,这些元素位于 bookstore 元素下,并且价格元素的值大于 30。

以下 FLWOR 表达式将选择与上面的路径表达式完全相同的路径:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
return $x/title

结果将是:

<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>

使用 FLWOR,您可以对结果进行排序:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title

这个for子句将 bookstore 元素下的所有 book 元素选择到名为 $x 的变量中。

这个where子句仅选择价格元素值大于 30 的图书元素。

这个order by子句定义排序顺序。将按标题元素排序。

这个return子句指定应该返回什么。这里它返回标题元素。

上面 XQuery 表达式的结果将是:

<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>