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中,将节点划分为七种节点类型:

1. 根节点(Root Node)
根节点是一棵树的最上层,根节点是唯一的。树上其它所有元素节点都是它的子节点 或后代节点。对根节点的处理机制与其它节点相同。在XSLT中对树的匹配总是先从根 节点开始。

2. 元素节点(Element Nodes)
元素节点对应于文档中的每一个元素,一个元素节点的子节点可以是元素节点、注释 节点、处理指令节点和文本节点。可以为元素节点定义一个唯一的标识id。 元素节点都可以有扩展名,它是由两部分组成的:一部分是命名空间URI,另一部分是 本地的命名。

3. 文本节点(Text Nodes)
文本节点包含了一组字符数据,即CDATA中包含的字符。任何一个文本节点都不会有紧 邻的兄弟文本节点,而且文本节点没有扩展名。

4. 属性节点(Attribute Nodes)
每一个元素节点有一个相关联的属性节点集合,元素是每个属性节点的父节点,但属 性节点却不是其父元素的子节点。这就是说,通过查找元素的子节点可以匹配出元素 的属性节点,但反过来不成立,只是单向的。再有,元素的属性节点没有共享性,也 就是说不同的元素节点不共有同一个属性节点。
对缺省属性的处理等同于定义了的属性。如果一个属性是在DTD声明的,但声明为 #IMPLIED,而该属性没有在元素中定义,则该元素的属性节点集中不包含该属性。
此外,与属性相对应的属性节点都没有命名空间的声明。命名空间属性对应着另一 种类型的节点。

5. 命名空间节点(Namespace Nodes)
每一个元素节点都有一个相关的命名空间节点集。在XML文档中,命名空间是通过保留 属性声明的,因此,在XPath中,该类节点与属性节点极为相似,它们与父元素之间的 关系是单向的,并且不具有共享性。

6. 处理指令节点(Processing Instruction Nodes)
处理指令节点对应于XML文档中的每一条处理指令。它也有扩展名,扩展名的本地命 名指向处理对象,而命名空间部分为空。

7. 注释节点(Comment Nodes)
注释节点对应于文档中的注释。

 

 



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值