📜  XQuery XPath(1)

📅  最后修改于: 2023-12-03 15:21:19.420000             🧑  作者: Mango

XQuery XPath

简介

XQuery 和 XPath 是用于 XML 文档查询和处理的语言,它们是 W3C 组织定义的标准语言,可以用于从结构化或半结构化数据中提取有用信息。

XPath 是 XQuery 的基础,它是一种用于在 XML 文档中查找信息的语言,可以用来定位特定节点和属性,以及过滤和排序数据。

XQuery 是一种更为强大的语言,它建立在 XPath 的基础上,并具有编程语言的特征,可以通过类似于 SQL 的查询语句来对 XML 文档进行复杂的查询和处理。XQuery 不仅可以从 XML 文档中提取数据,还可以对查询结果进行转换、过滤和排序,生成新的 XML 或其他格式的数据。

语法
XPath

XPath 使用路径表达式来选择节点或者节点集,路径可以是绝对路径或相对路径。

基本语法

/              # 选择根节点
//             # 选择当前节点或任意后代节点
.              # 选择当前节点
..             # 选择当前节点的父节点
*              # 选择所有节点
@              # 选择元素的属性
nodeName       # 选择节点名称为 nodeName 的节点
nodeName/text()# 选择 nodeName 节点的文本内容

谓语语法

谓语是用于过滤节点的,可以在路径表达式中添加方括号来指定一个谓语条件。可以根据以下属性进行过滤:

nodeName                    # 节点名称为 nodeName
@attributeName='value'      # 属性 attributeName 的值为 value
[position=1]                # 节点的位置为 1
[last()]                    # 最后一个节点
[position()<=3]             # 前三个节点
[starts-with(@attribute, 'val')]   # 属性 attributeName 值以 'val' 开头
[not(@attribute)]           # 没有属性 attributeName 的节点
[nodeName='text']            # 节点名称为 text
[nodeName()='text']          # 节点名称为 text
[*='value']                 # 节点的文本内容中包含 value

轴语法

XPath 的轴可以定义一种与当前节点有关的选择器,可以在路径表达式中使用轴。

以下是常用的几种轴:

ancestor      # 所有祖先节点
ancestor-or-self # 所有祖先节点以及当前节点
attribute     # 所有属性节点
child         # 所有子节点
descendant    # 所有后代节点
descendant-or-self # 所有后代节点以及当前节点
following     # 当前节点之后的所有节点
following-sibling # 当前节点之后的所有同级节点
namespace     # 所有命名空间节点
parent        # 当前节点的父节点
preceding     # 当前节点之前的所有节点
preceding-sibling # 当前节点之前的所有同级节点
self          # 当前节点
XQuery

XQuery 除了支持 XPath 中的语法外,还具有更为强大的查询语句、函数和变量等特性。

查询语句

XQuery 的查询语句类似于 SQL 的语法,用于从 XML 文档中选择和处理数据。以下是一个 XQuery 的例子:

for $book in doc('books.xml')//book
where $book/price > 50
order by $book/title
return <book>{$book/title}</book>

以上查询语句的作用是选择价格大于 50 的图书的标题,并按标题排序返回。

函数和变量

XQuery 还支持许多函数和变量,可以对查询结果进行加工处理。以下是一些常见的函数和变量:

distinct-values() # 返回去重后的值
fn:count()        # 返回节点数
round()           # 对数值进行四舍五入
sum()             # 计算数值之和
fn:string-length() # 返回字符串的长度
substring()       # 截取字符串中的一部分
$variable         # 表示变量
应用

XQuery 和 XPath 可以用于 Web 开发、数据分析和转换等多个领域。常见的应用场景包括:

  • 提取和处理 XML 数据
  • 生成 XML、HTML 或其他格式的数据
  • 数据分析和转换
  • Web 技术和服务实现
结语

XQuery 和 XPath 是处理 XML 数据的必备工具,掌握它们可以更高效地处理和操作 XML 数据,实现数据分析和转换等目的。开发者可以根据需要选择合适的语法和工具,提高开发效率和代码质量。