在位置路径中指定节点测试 (SQLXML 4.0)

适用于:SQL Server Azure SQL 数据库

节点测试指定根据位置步骤选择的节点类型。 每个轴(轴、 轴、 属性轴)都有一个主体节点类型。 对于属性轴,主体节点类型为<属性>对于父轴、轴和轴,主体节点类型为<元素>

注意

不支持通配符节点测试 *(例如 child::*)。

节点测试:示例 1

位置路径 child::Customer 选择 <上下文节点的 Customer> 元素子级。

在本示例中,child 是轴,Customer 是节点测试。 子轴的主体节点类型为<元素> 因此,如果 <Customer> 节点是元素>节点,则节点测试为 <TRUE。 如果上下文节点没有 <Customer> 子级,则返回一组空的节点。

节点测试:示例 2

位置路径 attribute::CustomerID 选择 上下文节点的 CustomerID 属性。

在本示例中, attribute 轴是 CustomerID 节点测试。 属性轴的主体节点类型为<属性> 因此,如果 CustomerID 是属性>节点,则节点测试为< TRUE。 如果上下文节点没有 CustomerID,则返回一组空的节点。

注意

在此 XPath 实现中,如果位置步骤引用 <架构中未声明的元素><属性> 类型,则会生成错误。 这与 MSXML 中的 XPath 实现不同,在 MSXML 中返回空节点集。

轴的缩写语法

支持以下位置路径的缩写语法:

  • attribute:: 可缩写为 @

    位置路径 Customer[@CustomerID="ALFKI"]child::Customer[attribute::CustomerID="ALFKI"] 相同。

  • 可以从位置步骤中省略 child::

    因此, 级是默认轴。 位置路径 Customer/Orderchild::Customer/child::Order 相同。

  • self::node() 可缩写为一个句点 (.),parent::node() 可缩写为两个句点 (..)。