XPath

什么是XPath?

是一门在 XML 文档中查找信息的语言
是 XSLT 中的主要元素
包含一个标准函数库
是一个 W3C 标准
XQuery 和 XPointer 均构建于 XPath 表达式之上

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。
这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

XPath 节点

在 XPath 中,有七种类型的节点:

  1. 元素
  2. 属性
  3. 文本
  4. 命名空间
  5. 处理指令
  6. 注释
  7. 文档(根)节点

    XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

基本值(或称原子值,Atomic value)
项目(Item) 项目是基本值或者节点。

XPath 语法

选取节点

  1. 节点
    选取此节点的所有子节点

  2. /节点 (绝对路径)
    从根节点选取(取子节点)

  3. //节点 (相对路径)
    从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)

  4. .节点
    选取当前节点

  5. ..节点
    选取当前节点的父节点

  6. @属性
    选取属性

谓语

[1] 选取第一个
[last()] 选取最后一个
[last()-1] 选取倒数第二个
[position()<3] 选取前 2 个
[@lang] 选取 lang 属性所有的节点
[@lang='eng'] 选取 lang 属性值为 eng 的节点
[price>35.00] 选取价格大于 35.00 的节点

选取未知节点

* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何类型节点

选取若干路径

通过在路径表达式中使用 “|” 运算符可以选取若干个路径

轴可定义相对于当前节点的节点集。

  1. ancestor 选取当前节点的所有先辈(父、祖父等)。
  2. ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
  3. attribute 选取当前节点的所有属性。
  4. child 选取当前节点的所有子元素。
  5. descendant 选取当前节点的所有后代元素(子、孙等)。
  6. descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
  7. following 选取文档中当前节点的结束标签之后的所有节点。
  8. following-sibling 选取当前节点之后的所有兄弟节点
  9. namespace 选取当前节点的所有命名空间节点。
  10. parent 选取当前节点的父节点。
  11. preceding 选取文档中当前节点的开始标签之前的所有节点。
  12. preceding-sibling 选取当前节点之前的所有同级节点。
  13. self 选取当前节点。

运算符

div 除法
or 或
and 与
mod 取余数