XPath 语法


  • XPath 使用路径表达式在 XML 文档中进行导航
  • XPath 包含一个标准函数库
  • XPath 是 XSLT 中的主要元素
  • XPath 是一个 W3C 标准

XPath中有七种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档(根)节点。除了节点之外,还有基本值(Atomic value)的概念。
基本值:无父或无子的节点。常见于文本。
项目(Item):基本值或者节点。

/ 从根节点选取,即绝对路径;
// 从当前节点选取,即相对路径;
. 选取当前节点;
.. 选取当前节点的父节点;
@ 选取属性。

谓语(Predicates)用来查找某个特定的节点或者包含某个指定的值的节点:
  • /bookstore/book[1] 选取bookstore子元素的第一个book元素;
  • /bookstore/book[last()] 选取bookstore子元素的最后一个book元素;
  • /bookstore/book[position()<3] 选取bookstore元素的前两个book元素;
  • //title[@lang] 选取拥有lang属性的title元素;
  • //title[@lang='eng'] 选取lang属性为'eng'的title元素;
  • /bookstore/book[price>35.00] 选取bookstore元素中的所有book元素,且其中的price元素(内容)大于35.00

* 匹配任何元素节点;
@*匹配任何属性节点;
node() 匹配任何类型的节点
text() 匹配文本节点

//book/title | //book/price 选取book元素的所有title和price元素。

XPath轴(Axes)
  • ancestor 选取当前节点的所有先辈;
  • ancestor-or-self 选取当前节点及其所有先辈;
  • descendant 选取当前节点的所有后辈;
  • descendant-or-self 选取当前节点及其所有后辈;
  • parent 选取当前节点的父节点;
  • child 选取当前节点的子节点;
  • following 选取当前节点之后的所有节点;
  • following-sibling 选取当前节点之后的所有兄弟节点;
  • preceding 选取当前节点之前的所有节点;
  • preceding-sibling 选取当前节点之前的所有兄弟节点;
  • self 选取当前节点;
  • attribute 选取当前节点所有属性;
  • namespace 选取当前节点的所有命名空间节点。

XPath运算符
  • | 计算两个节点集;
  • + - * div mod加减乘除求余;
  • = != < <= > >= 比较;
  • or and 或与。