XPath 查询以表达式的形式指定。 有多种表达式。 位置路径是一个表达式,它选择一组相对于上下文节点的节点。 评估位置路径的结果是节点集。
位置路径的类型
位置路径可以采用以下任一形式:
绝对位置路径
绝对位置路径从文档的根节点开始。 它由斜杠标记(/)(可选)后跟相对位置路径组成。 斜杠标记 (/) 选择文档的根节点。
相对位置路径
相对位置路径从文档中的上下文节点开始。 位置路径由一个或多个位置步骤序列组成,由斜杠标记 (/) 分隔。 每个步骤选择一组相对于上下文节点的节点。 初始步骤序列选择一组相对于上下文节点的节点。 该集中的每个节点都用作以下步骤的上下文节点。 由该步骤标识的节点集已联接。 例如,child::Order/child::OrderDetail 选择上下文节点的 Order 元素子级的 OrderDetail> 元素子<级。><
注释
在 XPath 的 SQLXML 4.0 实现中,每个 XPath 查询都从根上下文开始,即使 XPath 不是显式绝对的。 例如,以“Customer”开头的 XPath 查询被视为“/Customer”。 在 XPath 查询 Customer[Order]中,客户从根上下文开始,但 Order 从 Customer 上下文开始。 有关详细信息,请参阅使用 XPath 查询简介(SQLXML 4.0)。
位置步骤
位置路径(绝对或相对)由包含三个部分的位置步骤组成:
轴
轴指定位置步骤和上下文节点选择的节点之间的树关系。 支持
parent和childattributeself轴。 如果在位置路径中指定了轴child,则查询选择的所有节点都是上下文节点的子级。 如果指定了轴parent,则所选节点是上下文节点的父节点。 如果指定了轴attribute,则选择的节点是上下文节点的属性。节点测试
节点测试指定位置步骤选择的节点类型。 每个轴(
child、parent和attributeself)都有一个主体节点类型。attribute对于轴,主体节点类型为<属性>。parent对于主体child节点类型是元素,而self轴是<元素>。例如,如果位置路径指定 child::Customer, <则选择上下文节点的 Customer> 元素子级。
child由于轴具有<元素>作为其主体节点类型,因此如果 Customer 是元素>节点,则节点测试 Customer 为< TRUE。选择谓词 (零个或多个)
谓词根据轴筛选节点集。 在 XPath 表达式中指定选择谓词类似于在 SELECT 语句中指定 WHERE 子句。 谓词在括号之间指定。 应用所选谓词中指定的测试会筛选节点测试返回的节点。 对于要筛选的节点集中的每个节点,谓词表达式的计算方式为上下文节点,节点集中的节点数为上下文大小。 如果谓词表达式的计算结果为该节点的 TRUE,则节点包含在生成的节点集中。
位置步骤的语法是由两个冒号(::),后跟零个或多个表达式)分隔的轴名称和节点测试,每个表达式在方括号中。 例如,XPath 表达式 (location path) child::Customer[@CustomerID='ALFKI'] 选择上下文节点的所有 <Customer> 元素子项。 然后,谓词中的测试将应用于节点集,该节点仅<返回其 CustomerID 属性的属性值为“ALFKI”的 Customer> 元素节点。
本节中
指定轴 (SQLXML 4.0)
提供指定轴的示例。
在位置路径中指定节点测试 (SQLXML 4.0)
提供指定节点测试的示例。
在位置路径中指定选择谓词 (SQLXML 4.0)
提供指定选择谓词的示例。