XPath学习记录——Part1

是对xml文档层次结构中的相关元素节点及内容进行检索,定位的语言。

 

一.XPath中的数据模型

1.序列

在XPath中,每个表达式的结果值都是由0个或者多个项组成的一个序列。

 

序列是一个递归的概念:

序列是由0个或多个项(item)组成的集合,并且是有序的集合。

项本身也可以是一个序列,或者是原子值或节点。

//原子值表示基本数据类型(XML schema中定义的十几种内置基本数据类型:整数,字符串…)

//节点位XML文档中的元素节点:ex. <a>12</a>,<stu></stu>….

//一个原子值或一个节点可以表示一个特殊的,长度为1的序列

 

 

序列是一个有序的集合,并且序列中的每个项都具有一个对应的位置参数(position),序列的第一个项的位置为1.

 EX:count($S)可用来计算序列S中项的个数(序列长度),$S[i]可访问S中的第i项,position()函数确定当前项目在序列中所处的位置。

 

序列计算表达式,以实现序列的构造,筛选以及序列项(Sequeue Item)的组合.

(1)序列构造表达式:序列是由()包含的一个列表,每个项用“,”进行分隔。

*节点集是无序的,所以不能包含取值相同的项;序列是有序的,所以能够包含相同的项,位置不同可以相互区分;项可以是一个原子值也可以是节点。

*序列不允许嵌套

*序列构造表达式可以使用范围操作符“to”   EX.(10,1 to 4)   等于   (10,1,2,3,4)

(2)序列筛选表达式

*可以使用判断谓词对序列进行筛选   EX.(1 to 100)[.mod 5 eq 0]   得到1~100中能被5整除的数

判断谓词表示筛选出满足指定条件的序列项

(3)序列组合表达式:使用序列操作符union(并),intersect(交),except(差),所有这些运算,将从结果序列中删除重复的值

 

 

2.XPath文档树模型

  XML文档作为一棵逻辑上的文档树进行处理,以便通过路径对其中的节点进行寻址。

七种类型的节点:

文档节点(Document node)

元素节点(Element node)

属性节点(Attribute Nodes)

文本节点(Text Nodes)

命名空间节点(Namespace Nodes)

处理指令节点(PI Nodes)

注释节点(Attribute Nodes)

 

文档节点对于整个XML文档,是根节点的父节点,是一个无形的节点

更节电是一个特殊的元素节点,包含整个文档树的其他节点

 

文档模型树本身有序,XPath处理过程中按照从上到下从左到右的方式依此遍历整个文档树。

 

(1)节点的名称(node name)

node-name()函数可返回指定节点名称

文档节点,注释节点,文本节点没有名称

 

(2)节点的字符串值(String Value)

实际上是针对该节点使用XPath的string()函数所得到的字符串结果

 

(3)节点的标识(Node Identity)

is操作符比较两个节点是否为同一节点

等值的比较只能判断两个节点的内容、结构是否相等

猜你喜欢

转载自blog.csdn.net/rainfall2333/article/details/84434193