1 / 9
文档名称:

2022XML认证教程:XPATH[word可编辑】.doc

格式:doc   大小:27KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2022XML认证教程:XPATH[word可编辑】.doc

上传人:1130474171@qq.com 2023/3/13 文件大小:27 KB

下载得到文件列表

2022XML认证教程:XPATH[word可编辑】.doc

文档介绍

文档介绍:该【2022XML认证教程:XPATH[word可编辑】 】是由【1130474171@qq.com】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【2022XML认证教程:XPATH[word可编辑】 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。精品范文资料欢迎下载
精品范文资料欢迎下载
精品范文资料欢迎下载
2022XML认证教程:XPATH
精品范文资料欢迎下载
精品范文资料欢迎下载
精品范文资料欢迎下载
XML认证教程:XPATH
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。下面我为大家整理了关于XPATH的XML认证教程,一起来看看吧:
用XPath精确定位节点元素
在利用XSL进行转换的过程中,匹配的概念特别重要。在模板声明语句xsl:templatematch=""和模板应用语句xsl:apply-templatesselect=""中,用引号括起来的部分必需能够精确地定位节点。详细的定位方法则在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中,将节点划分为七种节点类型:
根节点(RootNode)
根节点是一棵树的最上层,根节点是唯一的。树上其它全部元素节点都是它的子节点或后代节点。对根节点的处理机制与其它节点相同。在XSLT中对树的匹配总是先从根节点起先。
元素节点(ElementNodes)
元素节点对应于文档中的每一个元素,一个元素节点的子节点可以是元素节点、注释节点、处理指令节点和文本节点。可以为元素节点定义一个唯一的标识id。元素节点都可以有扩展名,它是由两部分组成的:一部分是命名空间URI,另一部分是本地的命名。
文本节点(TextNodes)
文本节点包含了一组字符数据,即CDATA中包含的字符。任何一个文本节点都不会有紧邻的兄弟文本节点,而且文本节点没有扩展名。
属性节点(AttributeNodes)
每一个元素节点有一个相关联的属性节点集合,元素是每个属性节点的父节点,但属性节点却不是其父元素的子节点。这就是说,通过查找元素的子节点可以匹配出元素的属性节点,但反过来不成立,只是单向的。再有,元素的属性节点没有共享性,也就是说不同的元素节点不共有同一个属性节点。
对缺省属性的处理等同于定义了的属性。假如一个属性是在DTD声明的,但声明为#IMPLIED,而该属性没有在元素中定义,则该元素的属性节点集中不包含该属性。
此外,与属性相对应的属性节点都没有命名空间的声明。命名空间属性对应着另一种类型的节点。
命名空间节点(NamespaceNodes)
每一个元素节点都有一个相关的命名空间节点集。在XML文档中,命名空间是通过保留属性声明的`,因此,在XPath中,该类节点与属性节点极为相像,它们与父元素之间的关系是单向的,并且不具有共享性。
处理指令节点(ProcessingInstructionNodes)
处理指令节点对应于XML文档中的每一条处理指令。它也有扩展名,扩展名的本地命名指向处理对象,而命名空间部分为空。
注释节点(CommentNodes)
注释节点对应于文档中的注释。
一个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()等等,这里我们就不再赘述。
以上这些匹配方法中,用得最多的还要数路径匹配。在上一章样式表的例子中,无论是在语句中,还是在语句中,都是依靠给出相对于当前路径的子路径来定位节点的。
本文来源:网络收集与整理,如有侵权,请联系作者删除,谢谢!