`

运算符和特殊字符——XPath语法详解系列(二)

    博客分类:
  • XML
阅读更多
  • 运算符和特殊字符

XPath 表达式是使用下表中所示的运算符和特殊字符构造的。

/

子运算符;选择左侧集合的直接子级。此路径运算符出现在模式开头时,表示应从根节点选择该子级。

//

递归下降;在任意深度搜索指定元素。此路径运算符出现在模式开头时,表示应从根节点递归下降。

.

指示当前上下文。

..

当前上下文节点的父级。

*

通配符;选择所有元素,与元素名无关。

@

属性;属性名的前缀。

@*

属性通配符;选择所有属性,与名称无关。

:

命名空间分隔符;将命名空间前缀与元素名或属性名分隔。

( )

为运算分组,明确设置优先级。

[ ]

应用筛选模式。

[ ]

下标运算符;用于在集合中编制索引。

+

执行加法。

-

执行减法。

div

根据 IEEE 754 执行浮点除法。

*

执行乘法。

mod

从截断除法返回余数。

此表不包括布尔运算符和集运算符,这两个运算符在布尔、比较和集表达式或集运算中列出。

 

优先级顺序(从最高优先级到最低优先级)的定义如下表所示。

优先级 字符 用途

1

( )

分组

2

[ ]

筛选器

3

/ //

路径运算

分组运算符 () 仅适用于顶级路径表达式 。例如,(//author/degree | //author/name) 是有效的分组运算,但 //author/(degree | name) 不是,详细请看分组 章节。

筛选模式运算符 ([] ) 的优先级高于路径运算符(/// )。例如,表达式 //comment()[3] 选择相对于文档中任意位置备注的父级索引等于 3 的所有备注。此表达式与表达式 (//comment())[3]  不同,后者选择相对于父级的所有备注集中的第三个备注。前一个表达式可以返回多个备注,后一个表达式只能返回一个备注。

 

路径运算符

特定类型的元素集合可以使用路径运算符(/// )确定。这些运算符根据其参数的“左侧”集合进行选择,“右侧”集合表示要选择的元素。子运算符 (/ ) 从左侧集合的直接子级中选择,而子代运算符 (// ) 从左侧集合的任意子代中选择。因此,// 可以作为一个或多个层次级别的替代。

注意,路径运算符在执行查询时更改上下文。通过将路径运算符连接在一起,用户可以遍历文档树。

表达式 引用

author/first-name

当前上下文节点的 <author> 元素中的所有 <first-name> 元素。

bookstore//title

<bookstore> 元素中更深的一级或多级(任意子代)的所有 <title> 元素。注意,此表达式与以下模式 bookstore/*/title 不同。

bookstore/*/title

属于 <bookstore> 元素的孙级的所有 <title> 元素。

bookstore//book/excerpt//emph

<book> 元素的 <excerpt> 子级中的任意位置和 <bookstore> 元素中的任意位置的所有 <emph> 元素:

.//title

当前上下文中更深的一级或多级的所有 <title> 元素。注意,本质上只有这种情况需要句点表示法。

通配符

通过使用通配符 (* ) 集合,不使用元素名即可引用元素。* 集合引用作为当前上下文的子级的所有元素,与名称无关。

示例:

表达式 引用

author/*

<author> 元素的所有子级 元素。

book/*/last-name

所有作为 <book> 元素的孙级的 <last–name> 元素。

*/*

当前上下文的所有孙级元素。

my:book

my 命名空间中的 <book> 元素。

my:*

my 命名空间中的所有元素。

注意,不支持模式 *:book

属性

XPath 使用 @ 符号表示属性名。属性和子元素应公平对待,两种类型之间的功能应尽可能相当。

注意

属性不能包含子元素,所以,如果对属性应用路径运算符,将出现语法错误。此外,不能对属性 应用索引,因为根据定义,不为属性定义任何顺序。

示例:

表达式 引用

@style

当前元素上下文的 style 属性。

price/@exchange

当前上下文中 <price> 元素的 exchange 属性。

book/@style

所有 <book> 元素的 style 属性。

注意,以下示例无效,因为属性不能包含任何子级。

price/@exchange/total

查找多个属性 

使用 @* 可以返回某个元素的所有属性。对于将属性作为记录中的字段的应用程序,此表达式可能非常有用。

示例:

表达式 引用

@*

当前上下文节点的所有属性。

@my:*

my 命名空间中的所有属性。不包括 my 命名空间中的元素的未限定属性。

注意,不支持模式 @*:title

分享到:
评论

相关推荐

    xpath语法详解

    6. **函数和运算符**:XPath支持一系列内置函数,如字符串函数、数字函数、布尔函数等,用于处理节点内容。运算符包括比较运算符(`=`, `!=`, `, `&gt;`, `, `&gt;=`),逻辑运算符(`and`, `or`),以及算术运算符。 7. ...

    XPath语法详解xml开发必备

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

    xpath语法与函数

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

    XPath基础用法详解

    =`, `, `&gt;`, `, `&gt;=`),逻辑运算符(`and`, `or`),算术运算符(`+`, `-`, `*`, `/`, `div`, `%`),以及字符串运算符(`concat()`, `contains()`, `starts-with()`, `ends-with()`)。 8. **应用与实践** XPath...

    【爬虫学得好,基础少不了】:XPath语法和lxml模块(详解)

    总的来说,XPath是XML和HTML解析的重要工具,熟练掌握XPath语法和使用方式对于进行数据抓取和处理,尤其是在网络爬虫领域,具有至关重要的作用。通过`lxml`库,我们可以轻松地在Python中利用XPath进行文档的解析和...

    xpath应用和说明

    XPath提供了丰富的语法和函数库,能够精确地定位XML文档中的元素和属性,使得数据检索和处理变得高效和灵活。作为W3C(World Wide Web Consortium)的标准,XPath广泛应用于各种XML相关的技术中,如XSLT、XML Schema...

    XML 路径语言(XPath) 版本 1.0

    - **定义**:XPath使用特定的符号来表示不同的语法结构。 - **示例**:`/` 表示根节点,`//` 表示任意深度的节点。 #### 四、核心函数库 ##### 4.1 节点集合函数 - **函数**:`count()`、`last()`、`position()`...

    XPath 使用方法

    4. **XQuery 和 XPointer**:这两种技术都建立在 XPath 的基础上,它们共享 XPath 的数据模型、函数和运算符。 #### 三、XPath路径表达式的组成 - **绝对路径**:从根节点开始,如 `/bookstore/book/title`。 - **...

    可以参考的xquery词法分析和语法分析.rar

    3.3 XQilla:XQilla是一个开源的XQuery和XPath 2.0处理器,它实现了XQuery规范,提供了词法分析和语法分析的功能。 总结,XQuery的词法分析和语法分析是理解并实现XQuery解析器的关键步骤。通过词法分析,我们能...

    Java使用JSONPath解析JSON完整内容详解

    Java使用JSONPath解析JSON完整内容详解 JsonPath是一种用于从JSON文档中提取特定数据片段的查询语言。它的语法类似于CSS选择器,能够精确地定位到JSON结构中的特定位置,从中提取所需的数据。对于开发者来说,...

    Xml path 语法

    #### 二、XPath语法基础 XPath使用路径表达式来选取XML文档中的节点或集合节点。路径表达式使用斜杠(/)来分隔节点。 ##### 1. 绝对路径 当XPath表达式的起始符号为单斜杠(/),则表示绝对路径,用于从XML文档...

    el表达式说明.pdf

    EL语言借鉴了ECMAScript和XPath表达式语言的理念,旨在提供一种简便的方式来处理表达式,特别是在处理命名空间(如PageContext属性)、嵌套属性、集合操作、算术、关系和逻辑运算符,以及对Java静态方法的调用方面。...

    绝顶得XSLT学习资料

    2. **XPath详解**:详细介绍XPath的语法,包括节点类型、轴、函数和运算符。XPath的路径表达式可以帮助我们准确地定位到XML文档的任何部分,而它的函数库则提供了对字符串、数字、节点集等的处理能力。 3. **XSLT...

    XQuery权威指南(简码·扫描版)

    - **25.3 XQuery 1.0/XPath 2.0和XPath 1.0的差别** - XQuery 1.0/XPath 2.0与XPath 1.0的主要区别。 #### 附录 - **内置函数参考** - XQuery内置函数的详细介绍。 - **内置类型** - XQuery内置类型的详细介绍。...

    EL表达式详细介绍

    EL受到ECMAScript和XPath表达式语言的影响,提供了一系列简洁的语法来处理集合、属性、操作符和静态方法。 ### EL语言的基本结构 EL表达式通常以`${}`包裹,例如`${expression}`。表达式内部可以包含各种元素,如...

    java EL 表达式

    但是,当属性名包含特殊字符或者需要动态获取属性时,`[]` 运算符更为灵活。例如,`${user["My-Name"]}` 或者 `${user[data]}` 其中 `data` 是一个变量。 #### 二、EL 隐含对象 EL 隐含对象是指在 EL 表达式中可以...

    jstl—el表达式

    3. `[ ]运算符`:用于访问包含特殊字符或者需要动态取值的属性,例如`${user["My-Name"]}`或`${sessionScope.user[data]}`。 EL表达式中的变量访问遵循特定的查找顺序:Page、Request、Session、Application范围,...

    JSP EL表达式很全哦

    - **`[]`运算符:** 主要用于访问包含特殊字符的属性名或动态属性名。例如,`${user["My-Name"]}` 或 `${user[data]}`,其中`data`是一个变量。 ##### 3. 变量范围 EL可以自动查找不同范围内的变量,顺序依次为...

Global site tag (gtag.js) - Google Analytics