是对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操作符比较两个节点是否为同一节点
等值的比较只能判断两个节点的内容、结构是否相等