在位置路径中指定节点测试 (SQLXML 4.0)
节点测试指定根据位置步骤选择的节点类型。 每个轴(子轴、 父轴、 属性或 自轴)都有一个主体节点类型。 对于属性轴,主体节点类型为<属性>。 对于父轴、子轴和自轴,主体节点类型为<元素>。
注意
不支持通配符节点测试 *(例如 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/Order
与child::Customer/child::Order
相同。self::node()
可缩写为一个句点 (.),parent::node()
可缩写为两个句点 (..)。