路径表达式 (XQuery)
适用于:SQL Server
XQuery 路径表达式用于定位文档中的节点,如元素节点、属性节点和文本节点。 路径表达式的结果始终以文档顺序显示,结果序列中不会出现重复的节点。 指定路径时,可以使用全文拼写的语法,也可以使用缩写语法。 以下信息主要介绍了全文拼写的语法。 缩写语法将在本主题的后面进行介绍。
注意
由于本主题中的示例查询针对 ProductModel 表中的 xml 类型列 CatalogDescription 和 Instructions 指定,因此应熟悉存储在这些列中的 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 Function (XQuery) 。
本节内容
在路径表达式步骤中指定轴
说明如何使用路径表达式中的轴步骤。
指定路径表达式步骤中的节点测试
说明如何使用路径表达式中的节点测试。
指定路径表达式步骤中的谓词
说明如何使用路径表达式中的谓词。
在路径表达式中使用缩写语法
说明如何使用路径表达式中的缩写语法。