`

位置路径之节点测试——XPath语法详解系列(十一)

    博客分类:
  • XML
XML 
阅读更多

节点测试

节点测试是 XPath 定位步骤唯一必选的部分。因此,了解节点测试对于成功使用 XPath 表达式至关重要。

有三种常见的节点测试类型:

  • 名称测试,使用扩展名称以及该名称与指定轴的关系来标识要选择的节点。

  • 节点类型测试,严格根据节点类型选择节点。

  • 确定目标的处理指令测试,仅选择与指定类型匹配的处理指令节点。

名称测试

名称测试是最常见的一种节点测试形式,可以明确地指定要选择的节点的名称。但是,如果只指定节点名,不会自动选择相应的节点,因为文档树可能包含同 名的不同节点类型。为了选择相应的节点,名称测试只选择名称与指定名称匹配并且节点类型与指定轴的主要节点类型匹配的节点。

 

下表列出了各种轴的主要节点类型。

轴 主要节点类型

除了 attribute:: 轴或 namespace:: 轴以外的任何轴(即可以包含元素的轴)

元素

属性

属性

命名空间

命名空间

 

名称测试中指定的名称可能属于以下三种类型之一:星号 (*)、QName 或表达式 NCName:* 。下表显示的示例说明每种类型的名称如何与指定的轴配合使用,以找到特定的节点集。

名称 返回 示例

*(星号)

对于任何主要节点类型的节点,返回 True。

ancestor::* 选择上下文节点的所有上级。

attribute::* 选择上下文节点的所有属性。

namespace::* 选择上下文节点的所有名称属性。

QName

对于任何扩展名称等于 QName 指定的扩展名称的主要节点类型节点,返回 True。

child::para 选择所有属于上下文节点子级的 <para> 元素节点。如果上下文节点没有 <para> 子级,则选择一个空节点集。

NCName:*

对于任何扩展名称包含 NCName 展开到的命名空间 URI 的主要节点类型节点(与本地名称无关),返回 True。

如果节点测试为 QName,XPath 必须先根据 XML 文件中的上下文命名空间声明展开 QName。此展开过程与开始标记和结束标记中的元素名的展开过程相同,只是不使用通过 xmlns 声明的默认命名空间。如果 QName 没有前缀,XPath 将查找本地名称与给定 QName 匹配和命名空间 URI 为空的节点。如果 QName 的前缀与文件中的任何上下文命名空间均不对应,可能会出错。

如果节点测试为 NCName:*,XPath 展开 NCName 的方式与展开 QName 的方式相同。同样,如果 NCName 部分与文件的上下文命名空间声明中包含的任何前缀均不对应,NCName:* 可能会出错。

节点类型测试

要选择除元素节点以外(或包括元素节点)的节点类型,请使用节点类型测试。使用节点类型测试的作用是重写给定轴的主要节点类型。例如,descendant::text() 找到上下文节点以下的所有文本节点,即使下降轴的主要节点类型是元素。

有四种节点类型测试,如下表中所示。


节点类型 返回 示例

comment()

对注释节点返回 True。

following::comment() 选择所有出现在上下文节点之后的注释节点。

node()

对任何类型的节点返回 True。

preceding::node() 选择所有出现在上下文节点之前的节点。

processing-instruction()

对处理指令节点返回 True。

self::processing instruction() 选择上下文节点中的所有处理指令节点。

text()

对文本节点返回 True。

child::text() 选择属于上下文节点子级的文本节点。

 

注意

processing-instruction() 测试可能包含文本参数;在此例中,对所有名称等于文本值的处理指令返回 True。有关更多信息,请参见指定目标的处理指令测试。

 

节点类型测试结尾的括号 () 是必不可少的。如果源文档包含名称为注释、文本、处理指令或节点的节点,结尾的括号可以避免可能会产生的任何问题。如果 XPath 应用程序遇到双括号,可以确定属于节点类型测试,而不是对具有相应名称的节点的名称测试。同样,节点类型测试不是 XPath 函数,后者的引用也包含括号、空字符串或其他字符串。

指定目标的处理指令测试

节点测试可以是指定目标的处理指令。此类节点测试的语法如下所示:

processing-instruction("target")

通过指定目标,处理指令测试找到所有与该目标匹配的处理指令节点。例如,以下节点测试找到文档中所有指定 XSLT 文件的处理指令节点。

/child::processing-instruction("xml-stylesheet")

分享到:
评论

相关推荐

    xpath语法详解

    8. **位置路径**:XPath的位置路径由一个或多个步骤组成,每个步骤可以包含轴、节点测试和选择器。例如,`/bookstore/book[1]`选取 bookstore 元素下的第一个 book 子元素。 9. **绝对路径和相对路径**:绝对路径从...

    Python3 xml.etree.ElementTree支持的XPath语法详解

    通过这些基本语法,我们可以编写XPath表达式来精确地查找XML文档中的特定部分。例如,在给定的XML文档中,我们可以找到每个国家的名称: ```python root = ET.fromstring(xml_string) for country in root.findall...

    XPath路径表达式详解

    "XPath路径表达式详解" XPath 是 W3C 的一个标准,旨在在 XML1.0 或 XML1.1 文档节点树中定位节点。XPath 路径表达式是一种表达式语言,返回值可能是节点、节点集合、原子值或节点和原子值的混合等。XPath2.0 是 ...

    XPath语法详解xml开发必备

    下面我们将详细探讨XPath语法及其在XML开发中的应用。 1. **XPath的基本概念** - **节点**:XML文档由一系列节点构成,如元素(element)、属性(attribute)、文本(text)、命名空间(namespace)、处理指令...

    xpath详解总结-很全面.docx

    在使用 XPath 之前,需要了解 XML 的基础知识,并且需要了解 XPath 的基础知识,例如 XPath 路径表达式的语法规则、上下文、轴、节点测试和谓词等概念。 XPath 是一种功能强大且灵活的语言,广泛应用于 XML 文档...

    C#操作xml之xpath语法

    ### C#操作XML之XPath语法详解 在C#中,操作XML文档是一项常见的任务,尤其在处理配置文件、数据交换格式或集成不同系统时。为了有效地解析和查询XML数据,XPath成为了一种不可或缺的语言。本文将深入探讨XPath的...

    xpath语法与函数

    ### XPath语法与函数详解 #### XPath简介 XPath是一种在XML文档中查找信息的语言,它用于在复杂的XML结构中定位特定的元素或属性。XPath对于理解并操作XML文档至关重要,尤其在XSLT转换、XQuery查询及XPointer定位...

    XPath基础用法详解

    XPath语法包括路径表达式、轴表达式、节点测试、谓语表达式等。路径表达式可以结合轴、节点测试和谓语来选取特定节点。谓语通常用于过滤节点集,例如`[条件]`。 7. **运算符** XPath支持多种运算符,包括比较...

    xpath详解总结,很全面[参照].pdf

    XPath 详解总结 XPath 是 W3C 的一个标准,它的主要目的是为了在 XML 文档节点树中定位节点。XPath 有两种版本:XPath1.0 和 XPath2.0。XPath2.0 是 XPath1.0 的超集,支持更加丰富的数据类型,并且保持了对 XPath...

    Selenium_XPath定位详解

    首先,XPath 是一种在XML文档中查找信息的语言,其语法和功能非常丰富。在Selenium中,XPath可以用来定位页面上的元素,如按钮、链接、输入框等。以下是一些基本的XPath定位方法: 1. **基于标签名**:通过元素的...

    XPath详解PDF版

    ### XPath详解 #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言。它用于在XML树结构中导航,并且能够返回所匹配节点或节点集。XPath的强大之处在于其简洁性和灵活性,允许用户轻松地从复杂的XML文档中...

    XPath 简单语法

    ### XPath简单语法详解 #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言,类似于HTML中的CSS选择器或SQL中的查询语句。XPath能够快速定位到XML文档中的某个节点或者一组节点,并且可以用来抽取节点数据...

    selenium自动化测试之xpath进阶

    ### Selenium自动化测试之XPath进阶知识点详解 #### 一、XPath概述 XPath 是一种用于在 XML 文档中查找信息的语言,它可以快速定位到 XML 文档中的任何部分。在 Web 自动化测试领域,XPath 被广泛应用于元素的定位...

    (完整版)python+xpath笔记.doc

    XPath 语法详解 XPath(XML Path Language)是一种用于选择 XML 文档中节点的语言。它提供了一种灵活的方式来定位 XML 文档中的节点,支持多种节点选择方式,例如通过节点名称、属性、值等。 选择节点常用的路劲...

    XML 路径语言(XPath) 版本 1.0

    ### XML路径语言(XPath)版本1.0:关键知识点解析 #### 一、XPath简介与背景 **XPath** 是一种用于查找 **XML** 文档中信息的语言,它于1999年11月16日由 **W3C** (万维网联盟)发布为推荐标准。XPath 的设计...

    解析XPath语法之在C#中使用XPath的示例详解

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许通过简洁的表达式来选取XML文档中的节点,如元素、属性、文本等。...理解XPath语法和在C#中如何应用它,对于处理XML数据的开发人员至关重要。

    Python爬虫基础之XPath语法与lxml库的用法详解

    学习XPath语法和使用`lxml`可以帮助开发者更高效地编写爬虫程序,从而提升数据抓取的效率和质量。在Python中,`lxml`提供了丰富的API,能够处理复杂的数据结构,是进行网络数据抓取的得力助手。为了进一步掌握`lxml`...

    Xpath常用语法示例

    ### Xpath常用语法详解 #### 一、遍历节点 Xpath中的遍历操作非常常见,主要用于处理XML文档中的多个相同节点。例如,在一个XML文档中有多个`&lt;div&gt;`标签带有`class="content"`属性,我们可以使用`&lt;xsl:for-each&gt;`...

    Xpath教程 如何使用xpath

    #### 六、XPath语法 **XML实例文档** ```xml &lt;title lang="eng"&gt;Harry Potter &lt;price&gt;29.99 &lt;title lang="eng"&gt;Learning XML &lt;price&gt;39.95 ``` **选取节点** XPath使用路径表达式来选取XML文档中...

Global site tag (gtag.js) - Google Analytics