1. for: 用于声明一个变量,并指定其取值范围。
2. let: 用于声明一个临时变量,其作用范围仅在当前FLWOR表达式内。
3. where: 用于添加条件,过滤掉不符合条件的元素。
4. order by: 用于对结果进行排序。
5. return: 用于返回最终的结果。
下面是一个简单的例子,演示了如何使用FLWOR表达式查询XML文档中的书籍信息:
for $book in doc("books.xml")//book
where $book/price > 30
order by $book/title
return $book/title
在这个例子中:
- for $book in doc("books.xml")//book:声明一个变量 $book,它的取值范围是文档中所有的 <book> 元素。
- where $book/price > 30:添加一个条件,筛选掉价格小于等于30的书籍。
- order by $book/title:对符合条件的书籍按标题进行升序排序。
- return $book/title:返回符合条件的书籍的标题。
以上FLWOR表达式将返回价格大于30的书籍标题,并按标题升序排序的结果。
另外,FLWOR表达式还支持嵌套,可以在 for 和 let 子句中包含更复杂的逻辑。以下是一个嵌套FLWOR表达式的例子,用于查询作者及其写的书籍:
for $author in distinct-values(doc("books.xml")//book/author)
return
<author>
{ $author }
<books>
{
for $book in doc("books.xml")//book[author = $author]
return $book/title
}
</books>
</author>
在这个例子中,外层的FLWOR表达式用于迭代所有不同的作者,内层的FLWOR表达式用于迭代每个作者写的书籍。这样的嵌套结构允许更复杂的查询和结果构造。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12261/XML