XQuery用于查询XML数据,核心语法包括路径表达式、FLWOR结构、变量定义与XML构造;通过示例掌握节点定位、过滤排序及函数应用,可高效提取结构化信息。

XQuery 是一种专门用于查询和操作 XML 数据的语言,特别适用于从 XML 数据库中提取结构化信息。它类似于 SQL 对关系数据库的作用,但针对的是树状结构的 XML 文档。以下是 XQuery 查询 XML 数据的核心语法与使用方法,帮助你快速上手。
1. 基本路径表达式(类似 XPath)
XQuery 的基础是 XPath 表达式,用于定位 XML 中的节点。
例如,有如下 XML 数据:XML入门 张三 50 XQuery详解 李四 80
要查询所有书名,使用:
/doc/books/book/title
其中 /doc 是文档根节点(取决于数据库中的存储结构),后面跟路径逐层下探。
2. FLWOR 表达式:XQuery 的核心结构
FLWOR 是 XQuery 最强大的查询结构,类似 SQL 的 SELECT-FROM-WHERE。它是 For、Let、Where、Order by、Return 的缩写。
示例:查询价格大于 60 的书籍标题:
for $b in /doc/books/book where $b/price > 60 order by $b/title return $b/title
- for:遍历节点序列
- where:设置过滤条件
- order by:排序结果
- return:定义返回内容
3. 使用变量(Let)和构造新 XML
let 可以定义变量,方便复用或组织逻辑。
示例:构造一个推荐书单:
let $expensive-books := /doc/books/book[price > 70] return{ for $b in $expensive-books return - {$b/title} by {$b/author}
}
大括号 {} 用于嵌入 XQuery 表达式,可动态生成 XML 内容。
4. 谓词过滤与函数调用
在路径中使用谓词 [] 进行条件筛选。
- /book[price > 50]:价格高于 50 的书
- /book[author = "李四"]:作者为李四的书
- /book[position() = 1]:第一本书
常用函数:
- contains(文本, 关键词):模糊匹配
- upper-case()、lower-case():大小写转换
- count():统计节点数量
例如:查找书名包含“XML”的书籍
/doc/books/book[contains(title, "XML")]
基本上就这些。掌握路径表达式、FLWOR 结构和基本函数,就能高效地从 XML 数据库中提取所需数据。实际使用时结合具体数据库(如 eXist-db、BaseX)的文档结构调整根路径即可。不复杂但容易忽略细节,多练习常见查询模式会更熟练。










