XQuery 选择和过滤学习笔记

1. XQuery 简介

XQuery 是一种基于 XML 的查询语言,用于从 XML 文档中提取数据。它包括一些强大的过滤和选择功能,使得从大量的 XML 数据中提取所需信息变得非常容易。

2. XQuery 选择

在 XQuery 中,使用 XPath 表达式进行选择。XPath 表达式是一种用于定位 XML 文档中特定部分的语法。以下是一些常见的 XPath 选择器:

  • /:匹配文档根节点。
  • //:匹配任意节点。
  • *:匹配任何元素节点。
  • @:匹配任何属性节点。

例如,在以下 XML 文档中:

Copy Code
<books> <book id="1"> <title>XQuery Basics</title> <author>John Doe</author> </book> <book id="2"> <title>XML Parsing in Java</title> <author>Jane Smith</author> </book> </books>

要选择所有书籍的标题,可以使用以下 XPath 表达式:

Copy Code
/books/book/title

此表达式将返回:

Copy Code
XQuery Basics XML Parsing in Java

3. XQuery 过滤

使用 XQuery,可以通过指定条件来过滤文档中的元素。以下是一些常见的过滤器:

  • =:等于。
  • !=:不等于。
  • <:小于。
  • >:大于。
  • <=:小于等于。
  • >=:大于等于。
  • and:逻辑与。
  • or:逻辑或。
  • not:逻辑非。

例如,在以下 XML 文档中:

Copy Code
<students> <student id="1"> <name>Tom</name> <age>20</age> </student> <student id="2"> <name>Jerry</name> <age>22</age> </student> <student id="3"> <name>Mike</name> <age>18</age> </student> <student id="4"> <name>Lisa</name> <age>24</age> </student> </students>

要选择年龄在 20 到 24 岁之间的学生,可以使用以下 XQuery 表达式:

Copy Code
/students/student[age>=20 and age<=24]

此表达式将返回:

Copy Code
<student id="1"> <name>Tom</name> <age>20</age> </student> <student id="2"> <name>Jerry</name> <age>22</age> </student> <student id="4"> <name>Lisa</name> <age>24</age> </student>

4. 示例

以下是一个从 XML 文档提取数据的示例。假设有以下 XML 文件:

Copy Code
<users> <user> <name>John</name> <age>25</age> </user> <user> <name>Jane</name> <age>30</age> </user> <user> <name>James</name> <age>22</age> </user> </users>

要提取年龄大于等于 25 的用户的名称,可以使用以下 XQuery 表达式:

Copy Code
for $user in /users/user where $user/age >= 25 return $user/name

这将返回:

Copy Code
John Jane

5. 总结

在 XQuery 中,选择和过滤是非常重要的功能,使得从 XML 数据中提取所需信息变得非常容易。掌握了基本的选择和过滤知识后,我们可以更加高效地处理 XML 数据。