路径表达式 (XQuery)
XQuery 路径表达式用于定位文档中的节点,如元素节点、属性节点和文本节点。路径表达式的结果始终以文档顺序显示,结果序列中不会出现重复的节点。指定路径时,可以使用全文拼写的语法,也可以使用缩写语法。以下信息主要介绍了全文拼写的语法。缩写语法将在本主题的后面进行介绍。
注意: |
---|
因为本主题中的示例查询是对 ProductModel 表中的 xml 类型列(CatalogDescription 和 Instructions)指定的,所以您应该了解这些列中存储的 XML 文档的内容和结构。有关详细信息,请参阅 AdventureWorks 数据库中的 xml 数据类型表示形式。 |
路径表达式可以是相对的,也可以是绝对的。这两种表达式的说明如下:
- 相对路径表达式由一个或多个步骤组成,步骤间以单斜杠或双斜杠(/ 或 //)分隔。例如,
child::Features
是相对路径表达式,其中Child
仅指上下文节点的子节点,即当前正在处理的节点。表达式检索上下文节点的 <Features> 元素节点子级。 - 绝对路径表达式以单斜杠或双斜杠(/ 或 //)开头,后面跟有可选的相对路径。例如,表达式
/child::ProductDescription
中的起始斜杠表示它是一个绝对路径表达式。因为表达式开始处的斜杠返回上下文节点的文档根节点,所以该表达式返回文档根的所有 <ProductDescription> 元素节点子级。
如果绝对路径以单斜杠开头,则它后面未必跟有相对路径。如果仅指定单斜杠,则表达式将返回上下文节点的根节点。对于 XML 数据类型,根节点为其文档节点。
典型路径表达式由几个步骤组成。例如,绝对路径表达式 /child::ProductDescription/child::Summary``
包含两个步骤,步骤间以单斜杠分隔。
- 第一步检索文档根的 <ProductDescription> 元素节点子级。
- 第二步检索每个已检索的 <ProductDescription> 元素节点(变回上下文节点)的 <Summary> 元素节点子级。
路径表达式中的步骤可以是轴步骤,也可以是一般步骤。
轴步骤
路径表达式中的轴步骤分为下列几个部分。
- 轴
定义移动的方向。路径表达式中的轴步骤从上下文节点开始,导航到在轴指定的方向上可访问的那些节点。
- 节点测试
指定要选择的节点类型或节点名称。
- 零个或多个可选谓词
通过选择一些节点和放弃其他节点来筛选节点。
下列示例在路径表达式中使用了轴步骤****:
- 绝对路径表达式
/child::ProductDescription
只包含一个步骤。它指定了一个轴 (child
) 和一个节点测试 (ProductDescription
)。 - 相对路径表达式
child::ProductDescription/child::Features
包含两个步骤,步骤间以单斜杠分隔。两个步骤指定了一个轴 child。ProductDescription 和 Features 为节点测试。 - 相对路径表达式
child::root/child::Location[attribute::LocationID=10]``
包含两个步骤,步骤间以单斜杠分隔。第一步指定了一个轴 (child
) 和一个节点测试 (root
)。第二步指定了轴步骤的所有三个组件:轴 (child)、节点测试 (Location
) 和谓词 ([attribute::LocationID=10]
)。
有关轴步骤组件的详细信息,请参阅在路径表达式步骤中指定轴、指定路径表达式步骤中的节点测试和指定路径表达式步骤中的谓词。
一般步骤
一般步骤是一个必须为节点序列的表达式。
SQL Server 中的 XQuery 实现支持一般步骤作为路径表达式中的第一步。下面是使用一般步骤的路径表达式的示例。
(/a, /b)/c
id(/a/b)
有关 id 函数的详细信息,请参阅 id 函数 (XQuery)。
本节内容
- 在路径表达式步骤中指定轴
说明如何使用路径表达式中的轴步骤。
- 指定路径表达式步骤中的节点测试
说明如何使用路径表达式中的节点测试。
- 指定路径表达式步骤中的谓词
说明如何使用路径表达式中的谓词。
- 在路径表达式中使用缩写语法
说明如何使用路径表达式中的缩写语法。