XML认证教程:XPATH
J2EE Web核心技术《XHTML与XML应用开发》——第8章 XML XPath技术及应用(第3部分)

第8章XML XPath技术及应用(第3/5部分)1.1.1XPath中的轴及亲属关系匹配1、XPath中的轴及应用XPath中的轴(XPath Axes)可定义相对于当前节点的节点集,利用它可以实现亲属关系的节点匹配。
因为XML文档中的各个节点形成树型结构,树中的任何一个节点都不是孤立的,节点之间的归属关系其实是一种亲属关系,如父、子、祖先、后代、兄弟等等。
当然,在对标签元素节点进行匹配时,可以充分应用节点之间所存在的这些亲属关系。
2、Xpath中的节点之间的各种关系及示例1)父(Parent)节点除根标签以外的其他标签元素节点以及属性都允许有一个父节点,在下面的示例中的<testMethod>标签元素节点是<lastHomeWork>、属性“homeWork”及<test>的父节点:<testMethod homeWork="6"><lastHomeWork>利用所学习的J2EE Web技术设计和实现XXXX系统</lastHomeWork><test>在课程结束进行考试</test></testMethod>2)子(Children)节点每个标签元素节点可有零个、一个或多个子节点,在下面的示例中的<lastHomeWork>节点及<test>节点是<testMethod>标签元素节点的子节点:<testMethod homeWork="6"><lastHomeWork>利用所学习的J2EE Web技术设计和实现XXXX系统</lastHomeWork><test>在课程结束进行考试</test></testMethod>3)同胞(Sibling)节点拥有相同父节点的各个节点互为同胞(兄弟)节点,在下面的示例中的<lastHomeWork>、属性“homeWork”及<test>节点互为同胞(兄弟)节点:<testMethod homeWork="6"><lastHomeWork>利用所学习的J2EE Web技术设计和实现XXXX系统</lastHomeWork><test>在课程结束进行考试</test></testMethod>4)先辈(Ancestor)节点泛指某个节点的父、祖父、祖父的父等更上级的各个层次的节点等,在下面的示例中的<test>标签元素节点的先辈节点分别是<testMethod>和<oneCourseInfo>节点:<oneCourseInfo><testMethod homeWork="6"><test>在课程结束进行考试</test></testMethod></oneCourseInfo>5)后代(Descendant)节点某个节点的子节点、孙节点以及孙节点的子节点等更低层次的节点等,在下面的示例中的<oneCourseInfo>标签元素节点的后代节点分别是<testMethod>和<test>节点:<oneCourseInfo><testMethod homeWork="6"><test>在课程结束进行考试</test></testMethod></oneCourseInfo>3、XPath中的各种形式的轴及功能说明1)ancestor轴它选取当前节点的所有祖先辈(父、祖父等)节点,如示例:“//姓名/ancestor::* ”表示所有<姓名>标签元素的祖先节点元素。
xpath 常用语法

xpath 常用语法一、XPath简介XPath是一种用于在XML文档中定位节点的语言。
它是一种基于路径表达式的查询语言,可以通过节点名称、属性、位置等信息来查找XML文档中的节点。
二、XPath语法1. 节点选择器- 通配符:使用星号(*)表示选择所有节点。
- 元素节点:使用元素名称选择节点。
- 属性节点:使用[@属性名]选择节点。
- 文本节点:使用text()选择节点。
2. 路径表达式- 相对路径:使用斜杠(/)表示从根节点开始的路径。
- 绝对路径:使用双斜杠(//)表示不考虑节点位置的路径。
- 父节点:使用双点(..)表示选取当前节点的父节点。
- 子节点:使用斜杠(/)表示选取当前节点的子节点。
- 兄弟节点:使用斜杠加节点名称(/节点名称)表示选取当前节点的同级节点。
3. 谓语- 谓语是用来过滤节点的条件表达式,可以在节点选择器后面使用方括号([])来添加谓语。
- 谓语可以使用比较运算符(=、!=、<、>等)和逻辑运算符(and、or)进行条件判断。
4. 逻辑运算符- and:逻辑与运算符,表示同时满足两个条件。
- or:逻辑或运算符,表示满足其中一个条件。
- not:逻辑非运算符,表示不满足条件。
5. 数字函数- count():返回指定节点集合的节点数量。
- sum():计算指定节点集合的数值之和。
- avg():计算指定节点集合的数值平均值。
- min():返回指定节点集合的最小值。
- max():返回指定节点集合的最大值。
6. 字符串函数- concat():连接两个字符串。
- contains():判断一个字符串是否包含另一个字符串。
- starts-with():判断一个字符串是否以另一个字符串开头。
- ends-with():判断一个字符串是否以另一个字符串结尾。
- substring():截取字符串的一部分。
- string-length():返回字符串的长度。
XPath简明教程

资料来源:W3School
1
北京中遥地网信息技术有限公司
目录
0 XPath 教程....................................................................................................................................4 1 XPath 简介....................................................................................................................................4 1.1 什么是 XPath?..........................................................................................................................4 1.2 XPath 路径表达式.....................................................................................................................4 1.3 XPath 标准函数.........................................................................................................................4 1.4 XPath 在 XSLT 中使用...........................................................................................................5 1.5 XPath 是 W3C 标准 ................................................................................................................5 2 XPath 节点....................................................................................................................................5 2.1 XPath 术语.................................................................................................................................5 2.1.1 节点(Node) .........................................................................................................................5 2.1.2 基本值(或称原子值,Atomic value) ...............................................................................6 2.1.3 项目(Item) .........................................................................................................................6 2.2 节点关系....................................................................................................................................6 2.2.1 父(Parent) ..........................................................................................................................6 2.2.2 子(Children).......................................................................................................................7 2.2.3 同胞(Sibling) .....................................................................................................................7 2.2.4 先辈(Ancestor) ..................................................................................................................7 2.2.5 后代(Descendant) ..............................................................................................................8 3 XPath 语法....................................................................................................................................8 3.1 XML 实例文档..........................................................................................................................9 3.2 选取节点.....................................................................................................................................9 3.3 谓语(Predicates) .................................................................................................................10 3.4 选取未知节点..........................................................................................................................11 3.5 选取若干路径..........................................................................................................................11 4 XPath Axes(坐标轴) ..............................................................................................................12 4.1 XML 实例文档........................................................................................................................12 4.2 XPath 轴...................................................................................................................................12 4.3 位置路径表达式......................................................................................................................13 5 XPath 运算符..............................................................................................................................14 5.1 XPath 运算符...........................................................................................................................14 6 XPath 实例..................................................................................................................................15 6.1 XML实例文档..........................................................................................................................15 6.2 节点选取..................................................................................................................................16 7 XPath、XQuery 以及 XSLT 函数...........................................................................................19 7.1 存取函数..................................................................................................................................19 7.2 错误和跟踪函数......................................................................................................................19 7.3 有关数值的函数......................................................................................................................20 7.4 攸关字符串的函数..................................................................................................................20 7.5 针对 anyURI 的函数 .............................................................................................................23 7.6 关于布尔值的函数..................................................................................................................23 7.7 有关持续时间、日期和时间的函数......................................................................................24 7.8 与 QNames 相关的函数........................................................................................................26
xpath 基本语法

xpath 基本语法XPath(XML Path Language)是一种用于定位和处理XML文档中节点的语言。
它可以用于在XML文档中定位节点、提取信息以及执行各种操作。
XPath的基本语法包括以下几个方面:1. 节点选择,XPath使用路径表达式来选择XML文档中的节点。
最简单的路径表达式是节点名称,例如`/bookstore`表示选择根节点下的`bookstore`节点。
2. 路径表达式,除了简单的节点名称外,路径表达式还可以包含多个节点,用斜杠`/`分隔,例如`/bookstore/book`表示选择根节点下的`bookstore`节点中的所有`book`节点。
3. 谓词,在路径表达式中,可以使用谓词来过滤节点。
谓词用方括号`[]`表示,例如`/bookstore/book[1]`表示选择第一个`book`节点。
4. 通配符,XPath中使用星号``作为通配符,表示匹配任意节点,例如`/bookstore/`表示选择`bookstore`节点下的所有子节点。
5. 属性选择,XPath可以用`@`符号来选择节点的属性,例如`//book[@category='fiction']`表示选择所有`category`属性为`fiction`的`book`节点。
6. 选取所有节点,使用双斜杠`//`可以选取文档中的所有匹配选择模式的节点,例如`//book`表示选取文档中的所有`book`节点。
7. 选取父节点,使用双点`..`可以选取当前节点的父节点,例如`//title/..`表示选取所有包含`title`节点的父节点。
总之,XPath的基本语法包括节点选择、路径表达式、谓词、通配符、属性选择、选取所有节点和选取父节点等内容,通过灵活运用这些语法,可以准确地定位和处理XML文档中的节点信息。
xpath学习

1.什么是XPathXPath是一门在XML文档中查找信息的语言,用于在XML文档中通过元素和属性进行导航2.XPath路径表达式XPath 使用路径表达式来选取XML 文档中的节点或者节点集。
这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
3.XPath术语在XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及根节点。
<bookstore><!-- bookstore为根节点--><book><title lang="en">Harry Potter</title><!-- title这一级别叫做元素节点, lang叫做属性节点--><author>J K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>4.常用路径表达式5.表达式示例6.XPath运算7.XPath练习<?xml version="1.0" encoding="utf-8"?><root><p><div id="1" newname="业界新闻" newtype="1" orders="1" comment=""/><div id="2" newname="汽车新闻" newtype ="0" orders="2" comment=""/> <div id="3" newname="军事新闻" newtype="1" orders="3" comment=""> 军事新闻备注</div><div id="4" newname="法制新闻" newtype="1" orders="4" /><div id="5" newname="房产新闻" newtype="0" orders="5" /><div id="6" newname="其他新闻" newtype="0" orders="6" comment=""/> </p></root>1)、请写出读取所有div节点的xpath?2)、请写出读取newname=”军事新闻”的div节点的id属性的xpath?3)、请写出读取倒数第二个div节点的xpath?4)、请写出读取orders大于3且newtype=”0”的div节点的xpath?。
第6讲XPath

顺序轴
<?xml version="1.0" encoding="gb2312"?> <?xml-stylesheet type="text/xsl" href=―student.xslt"?> <roster> <student ID="n101"> <name>李华</name> <sex>男</sex> <birthday>1978.9.12</birthday> <score>92</score> <skill>Java</skill> </student> <student ID="n102"> <name>倪冰</name> <sex>女</sex> <birthday>1979.1.12</birthday> <score>89</score> <skill>Visual Basic</skill> </student> <student ID="n103"> <name>张君宝</name> <sex>男</sex> <birthday>1982.9.9</birthday> <score>98</score> <skill>XML</skill> </student> </roster>
xpath文档

xpath⽂档Xpath简介什么是xpathXPath 使⽤路径表达式在XML ⽂档中进⾏导航XPath 包含⼀个标准函数库XPath 是XSLT 中的主要元素XPath 是⼀个W3C 标准Xpath路径表达式XPath 使⽤路径表达式来选取XML ⽂档中的节点或者节点集。
这些路径表达式和我们在常规的电脑⽂件系统中看到的表达式⾮常相似。
Xpath标准函数XPath 含有超过100 个内建的函数。
这些函数⽤于字符串值、数值、⽇期和时间⽐较、节点和QName 处理、序列处理、逻辑值等等。
Xpath节点节点(node)在XPath 中,有七种类型的节点:元素、属性、⽂本、命名空间、处理指令、注释以及⽂档(根)节点。
XML ⽂档是被作为节点树来对待的。
树的根被称为⽂档节点或者根节点。
看下⾯的XML⽂档上⾯的XML⽂档中的节点例⼦:值值是⽆⽗或⽆⼦的节点例⼦:上⾯的xml⽂件⾥的:“en”J K.Rowling200529.99节点关系⽗(Parent)每个元素以及属性都有⼀个⽗。
在下⾯的例⼦中,book 元素是title、author、year 以及price 元素的⽗:⼦(Children)元素节点可有零个、⼀个或多个⼦。
在下⾯的例⼦中,title、author、year 以及price 元素都是book 元素的⼦:同胞(Sibling)拥有相同的⽗的节点在下⾯的例⼦中,title、author、year 以及price 元素都是同胞:先辈(Ancestor)某节点的⽗、⽗的⽗,等等。
在下⾯的例⼦中,title 元素的先辈是book 元素和bookstore 元素:后代(Descendant)某个节点的⼦,⼦的⼦,等等。
在下⾯的例⼦中,bookstore 的后代是book、title、author、year 以及price 元素:Xpath语法选取节点⼀下⾯的⽂档作为例⼦XPath 使⽤路径表达式在XML ⽂档中选取节点。
使用XPath对象解析xml文件

使⽤XPath对象解析xml⽂件使⽤XPath对象解析xml⽂件1.DocumentBuilderFactory类⼯⼚API,使应⽤程序能从XML⽂档获取⽣成DOM对象树的解析器其构造⽅法受保护,⽤newInstance()实例化2.创建解析器DocumentBuilder使⽤这个类,应⽤程序员可以从XML获得⼀个Document。
这个类的实例可从DocumentBuilderFactory.newDocumentBuilder()⽅法获得。
⼀旦获得此类实例,可以从各种输⼊源解析XML。
这些输⼊源是InputStreams,Files,URL和SAX InputSources。
----其构造⽅法是受保护的1public static void main(String[] args) throws Exception {2// 创建解析⼯⼚3 DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();4// 创建解析器5 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();6// 通过解析器读取配置⽂件--返回Document对象树--org.w3c.dom.Document7 Document doc = documentBuilder.parse("config/bookstore.xml");89// 创建XPath对象10 XPathFactory xPathFactory = XPathFactory.newInstance();11 XPath xPath = xPathFactory.newXPath();12/*13 * 1.获取bookstore节点下的book属性category值为web下的第⼆个 title节点的⽂本内容14 * bookstore-》book[@category='web'][2]-》title15 * xpath路径:/bookstore/book[@category='web'][2]/title/text()16*/17 String titleXpath = "/bookstore/book[@category='web'][2]/title/text()";18 String titleVlue = (String) xPath.evaluate(titleXpath, doc, XPathConstants.STRING);19 System.out.println("1:" + titleVlue);20/*21 * 2.获取bookstore节点下book属性category值为web的title属性为en的节点内容22 * xpath路径:/bookstore/book[@category='web']/title[@lang='en']/text() 选取属性为en23 * 的title[@lang='en']24*/25 String titleXpath2 = "/bookstore/book[@category='web']/title[@lang='en']/text()";26 String titleValue2 = (String) xPath.evaluate(titleXpath2, doc, XPathConstants.STRING);27 System.out.println("2:" + titleValue2);28/*29 * 3.获取bookstore下book属性category值为cooking的title的lang属性的值30 * xpath路径:/bookstore/book[@category='cooking']/title/@lang31*/32// 获取属性的值33 String str1 = "/bookstore/book[@category='cooking']/title/@lang";34 String shuxing = (String) xPath.evaluate(str1, doc, XPathConstants.STRING);35 System.out.println("3:" + shuxing);36/*37 * 4.获取bookstore节点下的所有book的节点集合 /bookstore/book38*/39// 返回值是节点集合40 String str3 = "/bookstore/book";41 NodeList all = (NodeList) xPath.evaluate(str3, doc, XPathConstants.NODESET);42// 开始遍历集合43for (int i = 0; i < all.getLength(); i++) {44// book节点45 Element bookelt = (Element) all.item(i);// i是获取第⼏个46 String titleValue = (String) xPath.evaluate("title", bookelt, XPathConstants.STRING);47 String authorValue = (String) xPath.evaluate("author", bookelt, XPathConstants.STRING);48 String yearValue = (String) xPath.evaluate("year", bookelt, XPathConstants.STRING);49 String priceValue = (String) xPath.evaluate("price", bookelt, XPathConstants.STRING);5051 System.out.println(52 "title:" + titleValue + " author:" + authorValue + " year:" + yearValue + " price:" + priceValue);5354 }55 }//config/bookstore.xml<?xml version="1.0" encoding="UTF-8"?><!--1.获取bookstore节点下的book属性category值为web下的第⼆个title节点的⽂本内容bookstore-》book[@category='web'][2]-》titlexpath路径:/bookstore/book[@category='web'][2]/title/text()--><!--2.获取bookstore节点下book属性category值为web的title属性为en的节点内容 xpath路径:/bookstore/book[@category='web']/title[@lang='en']选取属性为en 的title[@lang='en']--><!--3.获取bookstore下book属性category值为cooking的title的lang属性的值xpath路径:/bookstore/book[@category='cooking']/title/@lang--><!--4.获取bookstore节点下的所有book的节点集合/bookstore/book--><bookstore><book category="children"><title lang="en">Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="cooking"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="web"><title lang="en">Learning XML</title><author>XJS</author><year>2019</year><price>79.88</price></book><book category="web"><title lang="uk">Learning stack</title><author>XJS</author><year>2019</year><price>100.00</price></book></bookstore>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XML认证教程:XPATH
用XPath精确定位节点元素
在利用XSL进行转换的过程中,匹配的概念非常重要。
在模板声明语句xsl:template match = ""和模板应用语句xsl:apply-templates select = "" 中,用引号括起来的部分必须能够精确地定位节点。
具体的定位方法则在XPath中给出。
之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。
可以把XPath比作文件管理路径:通过文件管理路径,可以按照一定的规则查找到所需要的文件;同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点,显然这对XSLT 来说是一个最最基本的功能。
XPath数据类型
XPath可分为四种数据类型:
节点集(node-set)
节点集是通过路径匹配返回的符合条件的一组节点的集合。
其它类型的数据不能转换为节点集。
布尔值(boolean)
由函数或布尔表达式返回的条件匹配值,与一般语言中的布尔值相同,有true和 false两个值。
布尔值可以和数值类型、字符串类型相互转换。
字符串(string)
字符串即包含一系列字符的集合,XPath中提供了一系列的字符串函数。
字符串可与数值类型、布尔值类型的数据相互转换。
数值(number)
在XPath中数值为浮点数,可以是双精度64位浮点数。
另外包括一些数值的特殊描述,如非数值NaN(Not-a-Number)、正无穷大infinity、负无穷大-infinity、正负0等等。
number的整数值可以通过函数取得,另外,数值也可以和布尔类型、字符串类型相互转换。
其中后三种数据类型与其它编程语言中相应的数据类型差不多,只是第一种数据类型是XML文档树的特有产物。
XPath节点类型
另外,由于XPath包含的是对文档结构树的一系列操作,因此搞清楚XPath节点类型也是很必要的。
回忆一下第二章中讲到的XML文档的逻辑结构,一个XML文件可以包含元素、CDATA、注释、处理指令等逻辑要素,其中元素还可
以包含属性,并可以利用属性来定义命名空间。
相应地,在XPath中,将节点划分为七种节点类型:
根节点(Root Node)
根节点是一棵树的最上层,根节点是唯一的。
树上其它所有元素节点都是它的子节点或后代节点。
对根节点的处理机制与其它节点相同。
在XSLT中对树的匹配总是先从根节点开始。
元素节点(Element Nodes)
元素节点对应于文档中的每一个元素,一个元素节点的子节点可以是元素节点、注释节点、处理指令节点和文本节点。
可以为元素节点定义一个唯一的标识id。
元素节点都可以有扩展名,它是由两部分组成的:一部分是命名空间URI,另一部分是本地的命名。
文本节点(Text Nodes)
文本节点包含了一组字符数据,即CDATA中包含的字符。
任何一个文本节点都不会有紧邻的兄弟文本节点,而且文本节点没有扩展名。
属性节点(Attribute Nodes)
每一个元素节点有一个相关联的属性节点集合,元素是每个属性节点的父节点,但属性节点却不是其父元素的子节点。
这就是说,通过查找元素的子节点可以匹配出元素的属性节点,但反过来不成立,只是单向的。
再有,元素的属性节点没有共享性,也就是说不同的元素节点不共有同一个属性节点。
对缺省属性的处理等同于定义了的属性。
如果一个属性是在DTD声明的,但声明为 #IMPLIED,而该属性没有在元素中定义,则该元素的属性节点集中不包含该属性。
此外,与属性相对应的属性节点都没有命名空间的声明。
命名空间属性对应着另一种类型的节点。
命名空间节点(Namespace Nodes)
每一个元素节点都有一个相关的命名空间节点集。
在XML文档中,命名空间是通过保留属性声明的,因此,在XPath中,该类节点与属性节点极为相似,它们与父元素之间的关系是单向的,并且不具有共享性。
处理指令节点(Processing Instruction Nodes)
处理指令节点对应于XML文档中的每一条处理指令。
它也有扩展名,扩展名的.本地命名指向处理对象,而命名空间部分为空。
注释节点(Comment Nodes)
注释节点对应于文档中的注释。
一个XML文档树
我们来构造一棵XML文档树,作为后面举例的依托:
以下将要介绍一些XPath中节点匹配的基本方法。
路径匹配
路径匹配与文件路径的表示相仿,比较好理解。
有以下几个符号:
(1)用“/”指示节点路径
如“/A/C/D” 表示节点"A"的子节点"C"的子节点"D",即id值为d2的D 节点,“/”表示根节点。
(2)用“//” 表示所有路径以"//"后指定的子路径结尾的元素
如“//E” 表示所有E元素,结果是所有三个E元素,如“//C/E”表示所有父节点为C的E元素,结果是id值为e1和e2的两个E元素。
(3)用“*” 表示路径的通配符
如“/A/B/C/*”表示 A元素→B元素→C元素下的所有子元素,即name 值为b的B元素、 id值为d1的D元素和id值为e1和e2的两个E元素
“/*/*/D”表示上面有两级节点的D元素,匹配结果是id值为d2的D元素,如“//*”表示所有的元素。
位置匹配
对于每一个元素,它的各个子元素是有序的。
如:/A/B/C[1]表示A元素→B元素→C元素的第一个子元素,得到name 值为b的B元素
/A/B/C[last()]表示A元素→B元素→C元素的最后一个子元素,得到id 值为e2的E元素
/A/B/C[position()>1]表示A元素→B元素→C元素之下的位置号大于1的元素,得到id值为d1的D元素和两个具有id值的E元素
属性及属性值
在XPath中可以利用属性及属性值来匹配元素,要注意的是,元素的属性名前要有"@"前缀。
例如:
//B[@id]表示所有具有属性id的B元素,结果为id值为b1和b2的两个B元素
//B[@*]表示所有具有属性的B元素,结果为两个具有id属性的B元素和一个具有name属性B元素
//B[not(@*)]表示所有不具有属性的B元素,结果为A元素→C元素下的B元素
//B[@id="b1"] id值为b1的B元素,结果为A元素下的B元素
亲属关系匹配
XML文档可归结为树型结构,因此任何一个节点都不是孤立的。
通常我们把节点之间的归属关系归结为一种亲属关系,如父亲、孩子、祖先、后代、兄弟等等。
在对元素进行匹配时,同样可以用到这些概念。
例如:
//E/parent::* 表示所有E节点的父节点元素,结果为id值为a1的A元素和id值为c1的C元素
//F/ancestor::* 表示所有F元素的祖先节点元素,结果为id值为a1的A元素和id值为c2的C元素
/A/child::* 表示A的子元素,结果为id值为b1、b2的B元素,id值为c2的C元素,以及没有任何属性的E元素
/A/descendant::* 表示A的所有后代元素,结果为除A元素以外的所有其它元素
//F/self::* 表示所有F的自身元素,结果为F元素本身
//F/ancestor-or-self::* 表示所有F元素及它的祖先节点元素,结果为F元素、F元素的父节点C元素和A元素
/A/C/descendant-or-self::* 表示所有A元素→C元素及它们的后代元素,结果为id值为c2的C元素、该元素的子元素B、D、F元素
/A/C/following-sibling::* 表示A元素→C元素的紧邻的后序所有兄弟节点元素,结果为没有任何属性的E元素
/A/C/preceding-sibling::* 表示A元素→C元素的紧邻的前面所有兄弟节点元素,结果为id值为b1和b2的两个B元素
/A/B/C/following::* 表示A元素→B元素→C元素的后序的所有元素,结果为id 为b2的B元素、无属性的C元素、无属性的B元素、id为d2的D元素、无属性的F元素、\无属性的E元素。
/A/C/preceding::* 表示A元素→C元素的前面的所有元素,结果为id 为b2的B元素、id为e2的E元素、id为e1的E元素、id为d1的D元素、name 为 b的B元素、id为c1的C元素、id为b1的B元素
条件匹配
条件匹配就是利用一些函数的运算结果的布尔值来匹配符合条件的节点。
常用于条件匹配的函数有四大类:节点函数、字符串函数、数值函数、布尔函数。
例如last()、position()等等,这里我们就不再赘述。
以上这些匹配方法中,用得最多的还要数路径匹配。
在上一章样式表的例子中,无论是在语句中,还是在语句中,都是依靠给出相对于当前路径的子路径来定位节点的。