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

节点测试指定位置步骤选择的节点类型。 每个轴(childparentattributeself)都有一个主体节点类型。 attribute对于轴,主体节点类型为<属性>parent对于主体child节点类型是元素,而self轴是<元素>

注释

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

节点测试:示例 1

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

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

节点测试:示例 2

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

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

注释

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

轴的缩写语法

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

  • attribute:: 可以缩写为 @.

    位置路径 Customer[@CustomerID="ALFKI"]child::Customer[attribute::CustomerID="ALFKI"].

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

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

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