名称测试
名称测试是最常见的一种节点测试形式,可以明确地指定要选择的节点的名称。 但是,如果只指定节点名,不会自动选择相应的节点,因为文档树可能包含同名的不同节点类型。 为了选择相应的节点,名称测试只选择名称与指定名称匹配并且节点类型与指定轴的主要节点类型匹配的节点。
下表列出了各种轴的主要节点类型。
轴 | 主要节点类型 |
---|---|
除了 |
元素 |
特性 |
特性 |
命名空间 |
命名空间 |
在名称测试中指定的名称可能属于以下三种类型之一:星号 (*)、QName 或表达式 NCName:*
。 下表显示的示例说明每种类型的名称如何与指定的轴配合使用,以找到特定的节点集。
名称 | 返回 | 示例 |
---|---|---|
*(星号) |
对于任何主要节点类型的节点,返回 True。 |
|
QName |
对于任何扩展名称等于 QName 指定的扩展名称的主要节点类型节点,返回 True。 |
|
NCName:* |
对于任何扩展名称包含 NCName 展开到的命名空间 URI 的主要节点类型节点(与本地名称无关),返回 True。 |
|
备注
如果节点测试为 QName,XPath 必须先根据 XML 文件中的上下文命名空间声明展开 QName。 此展开过程与开始标记和结束标记中的元素名的展开过程相同,只是不使用通过 xmlns
声明的默认命名空间。 如果 QName 没有前缀,XPath 将查找本地名称与给定 QName 匹配和命名空间 URI 为空的节点。 如果 QName 的前缀与文件中的任何上下文命名空间均不对应,可能会出错。
如果节点测试为 NCName:*,XPath 展开 NCName 的方式与展开 QName 的方式相同。 同样,如果 NCName 部分与文件的上下文命名空间声明中包含的任何前缀均不对应,NCName:* 可能会出错。