W3C教程(9):W3C XPath 活动

W3C XPath(Activity) 是一个标准XML的查询语言,它可以用来找到 XML 文档中的元素和属性,并查询它们的值。本教程将会详细讲解 XPath 的表达式、函数及其他相关内容。

XPath 表达式

XPath 表达式是由一系列轴表达式或节点测试表达式连接而成的。最简单的 XPath 表达式是所有不含连接符的节点名称,例如: bookstore。更复杂的表达式由节点名称、轴、操作符以及文本值函数组成,例如: bookstore/book/title

XPath 操作数包括:数字、字符串、逻辑表达式、节点集合和布尔值。可以使用逻辑运算符 (例如大于号、小于号)、字符串运算符 (例如运算符“=”和contains()`) 和节点运算符 (例如父节点和子节点) 来组成 XPath 表达式。

如://book[price>30] 这条表达式表示选取所有价格大于 30 的书籍。

XPath 轴

XPath 轴指定了要沿其进行搜索的节点集合。

XPath 定义了 7 个轴,但常用的是以下 4 个轴:

  • ancestor: 父节点及父节点的父节点……直到文档的根节点
  • descendant: 直接子节点及子节点的子节点
  • following: 当前节点之后按文档顺序的所有节点
  • preceding: 当前节点之前按文档顺序的所有节点

如:ancestor::* 这条表达式表示选取当前节点的所有父节点。

XPath 函数

XPath 定义了大量内置的函数,例如数学函数、字符串函数、逻辑函数等等。常用的一些函数如下:

  • count(): 返回集合长度
  • concat(): 连接字符串
  • contain(): 如果字符串包含指定的子字符串,则返回 true,否则返回 false
  • starts-with(): 判断字符串是否以指定的字符串开头
  • substring(): 提取字符串的子集

如://book[contains(title,"Harry Potter")] 这条表达式表示选取所有标题中包含 "Harry Potter" 的书籍。

示例说明

示例1

XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J.K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

表达式://book[price>30]

结果集:

<book category="WEB">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
</book>

该表达式选取了所有价格大于 30 的书籍,结果集只包含了一本书。

示例2

XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<employees>
    <employee id="1" gender="M">
        <firstName>John</firstName>
        <lastName>Doe</lastName>
        <age>35</age>
        <department>IT</department>
        <salary>55000</salary>
    </employee>
    <employee id="2" gender="F">
        <firstName>Jane</firstName>
        <lastName>Smith</lastName>
        <age>47</age>
        <department>HR</department>
        <salary>65000</salary>
    </employee>
    <employee id="3" gender="M">
        <firstName>William</firstName>
        <lastName>Johnson</lastName>
        <age>25</age>
        <department>Sales</department>
        <salary>55000</salary>
    </employee>
    <employee id="4" gender="F">
        <firstName>Catherine</firstName>
        <lastName>Lee</lastName>
        <age>40</age>
        <department>Marketing</department>
        <salary>75000</salary>
    </employee>
</employees>

表达式://employee[department = 'IT'][salary>50000]/firstName

结果集:

<firstName>John</firstName>

该表达式选取了部门为 IT 且薪资大于 50000 的员工的姓名,结果集只包含了一个人。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:W3C教程(9):W3C XPath 活动 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 怎么格式化html代码? Dreamweaver格式化html代码的技巧

    以下是“怎么格式化html代码? Dreamweaver格式化html代码的技巧”的完整攻略: 怎么格式化html代码? 格式化HTML代码是一种使HTML代码更易于阅读和理解的方法。如果需要格式化HTML代码,可以按照以下步骤进行: 打开HTML文件:在文本编辑器或HTML编辑器中打开需要格式化的HTML文件。 使用格式化工具:使用HTML编辑器或在线格式…

    html 2023年5月18日
    00
  • Mabitis中的#与$符号区别及用法介绍

    与$符号是在Mabitis框架中常用的符号,它们分别表示不同的含义和用法。 #符号 定义 在Mabatis框架中,#符号被用来表示一个占位符,可以将该占位符的值动态传入SQL语句中。#符号与$符号的区别在于#符号传入的值会被自动添加单引号,使得传入的值变成字符串类型,而$符号传入的值不会被添加单引号,则传入的值类型按照原本的类型。 示例 <select…

    html 2023年5月30日
    00
  • 详解HTML5表单新增属性

    我们来详细讲解一下“详解HTML5表单新增属性”的攻略。 简介 HTML5为我们带来了很多方便的新特性和属性。其中,表单/Input标签新增了很多属性,为我们提供了便捷的操作和优秀的用户体验。接下来,我们将详细讲解HTML5表单新增的属性。 HTML5表单新增属性 1.required require属性在HTML5中是表单中常用的一个属性。可以帮助我们在提…

    html 2023年5月30日
    00
  • Spring使用AspectJ的注解式实现AOP面向切面编程

    下面是详细的攻略。 什么是AOP? AOP(Aspect Oriented Programming)是一种编程范式,主要思想是将程序中的横切关注点(Cross-Cutting Concerns)从业务逻辑模块中剥离出来,采用模块化的方式组合起来。 在实现AOP时,通常采用的方式是在程序运行时动态地将关注点与业务逻辑模块进行合并,以达到代码重用的目的。这主要是…

    html 2023年5月30日
    00
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    当我们在Windows操作系统中运行VBScript脚本时,有时可能会遇到“无效字符”或“中文乱码”等问题,这些问题通常都是编码问题所导致的。下面是针对此类问题的完整攻略: 步骤一:检查VBScript脚本文件编码 打开VBScript脚本文件 在Notepad++、Sublime Text等文本编辑器中,选择“编码”→“转为UTF-8 without BO…

    html 2023年5月31日
    00
  • GET方法URL中传递中文参数乱码的解决方法

    针对“GET方法URL中传递中文参数乱码的解决方法”,以下是完整的攻略: 问题描述 在使用GET方法传递中文参数时,经常会出现乱码的情况。例如以下的URL,参数name是中文,但是在浏览器中显示的是乱码。 http://www.example.com/page?name=张三 原因分析 GET方法将参数附加在URL的末尾,如果参数中含有中文字符,需要对中文进…

    html 2023年5月31日
    00
  • 怎么加入滴滴代驾? 滴滴打车申请成为代驾司机的技巧

    以下是“怎么加入滴滴代驾? 滴滴打车申请成为代驾司机的技巧”的完整攻略: 怎么加入滴滴代驾? 滴滴打车申请成为代驾司机的技巧 滴滴代驾是滴滴打车旗下的一项服务,用户可以通过滴滴代驾预约专业司机代为驾驶。如果用户想要加入滴滴代驾成为一名代驾司机,可以按照以下步骤进行操作。 步骤1:下载滴滴司机APP 用户需要在手机应用商店中下载并安装滴滴司机APP,然后进行注…

    html 2023年5月18日
    00
  • 跟我学习javascript的call(),apply(),bind()与回调

    跟我学习Javascript的call(),apply(),bind()与回调 基础知识 在Javascript中,函数不仅可以像其他变量一样进行传递,还可以通过call(), apply()和bind()这三种函数方法来控制函数内部的this关键字。这三种方法的主要作用是改变调用函数的this指向。 call()方法: call()方法的作用是在函数体内部…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部