一,简介:XPath 使用路径表达式来选取 XML 文档中的节点或者节点集,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。XPath 使用路径表达式在 XML 文档中进行导航 ;XPath 包含一个标准函数库 ;XPath 是 XSLT 中的主要元素 。
二,XPath 术语
节点(Node):在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
基本值(或称原子值,Atomic value):基本值是无父或无子的节点。
项目(Item):项目是基本值或者节点。
节点关系
父(Parent):每个元素以及属性都有一个父,
子(Children):元素节点可有零个、一个或多个子,
同胞(Sibling):拥有相同的父的节点
先辈(Ancestor):某节点的父、父的父,等等,
后代(Descendant):某个节点的子,子的子,等等;
三,XPath 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的,
nodename 选取此节点的所有子节点,
/ 从根节点选取 ,
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 ,
. 选取当前节点 ,
.. 选取当前节点的父节点 ,
@ 选取属性 ,
谓语(Predicates):谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。函数或者表达式;
选取未知节点:XPath 通配符可用来选取未知的 XML 元素。
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型的节点
选取若干路径:通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
四,XPath Axes(坐标轴):轴可定义某个相对于当前节点的节点集。
ancestor 选取当前节点的所有先辈(父、祖父等)
ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
attribute 选取当前节点的所有属性
child 选取当前节点的所有子元素。
descendant 选取当前节点的所有后代元素(子、孙等)。
descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following 选取文档中当前节点的结束标签之后的所有节点。
namespace 选取当前节点的所有命名空间节点
parent 选取当前节点的父节点。
preceding 选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling 选取当前节点之前的所有同级节点。
self 选取当前节点。
步的语法: 轴名称::节点测试[谓语]
五,XPath 运算符:XPath 表达式可返回节点集、字符串、逻辑值以及数字。
加(+),减(-),乘(*),除(div),等于(=),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=),与(and),或(or),余(mod),