XPath 坐标系(Axes)
XPath 坐标(axis)定义了从当前节点选择相关的节点集合的方法。请看下表:
| 坐标名称 | 结果说明 |
| ancestor | 选择所有当前节点的祖先 |
| ancestor-or-self | 选择所有当前节点的祖先以及当前节点本身 |
| attribute | 选择当前节点的所有属性 |
| child | 选择当前节点的所有子节点 |
| descendant | 选择当前节点的所有后代 |
| descendant-or-self | 选择当前节点的所有后代以及当前节点本身 |
| following | 选择当前节点结束标记之后的所有对象 |
| following-sibling | 选择当前节点之后的所有兄弟节点 |
| namespace | 选择当前节点的所有命名空间节点 |
| parent | 选择当前节点的父节点 |
| preceding | 选择当前节点开始标记之前的所有对象 |
| preceding-sibling | 选择当前节点之前的所有兄弟节点 |
| self | 选择当前节点 |
定位路径表达式(Location Path Expression)
XPath 的定位路径(location path)可以是相对路径或这绝对路径。绝对路径以斜杠“/”开始,而相对路径则不。不论是绝对路径还是相对路径,都可以包含若干个层次(steps),并以斜杠分隔:
绝对路径看起来像是:/step/step/...;而相对路径只是没有开头的斜杠:step/step/...。相对路径的第一个层次(step)声明是是基于当前所在的节点的。每一个层次的声明可以由下面的信息构成:
- 一个 XPath 坐标,用于定义选中节点与当前节点在树结构中的关系;
- 一个节点测试指示,用于在坐标系中标识节点;
- 零个或多个谓词,用于缩小选择范围。
一个位置层次的语法是:axisname::nodetest[predicate]。请看下面的例子:
| 示例 | 结果说明 |
| child::book | 选择所有作为当前节点子节点的 book 节点 |
| attribute::lang | 选择当前节点的 lang 属性 |
| child::* | 选择当前节点中包含的所有对象 |
| attribute::* | 选择当前节点的所有属性 |
| child::text() | 选择当前节点的所有文本子节点 |
| child::node() | 选择当前节点的所有子节点 |
| descendant::book | 选择当前节点后代中所有的 book |
| ancestor::book | 选择当前节点祖先中所有的 book |
| ancestor-or-self::book | 选择当前节点祖先中所有的 book,如果当前节点也是一个 book,那么也包括自身 |
| child::*/child::price | 选择当前节点的所有 price 孙节点 |
XPath 操作符
在之前的部分我们已经了解的操作符 |,这里我们进一步了解更多的关于操作符的信息。一个 XPath 表达式将返回一个节点集合、字符串、布尔型或者数值类型的结果,我们可以使用操作符来对它们进行“运算”。下表列出了常用的 XPath 操作符:
| 操作符 | 说明 | 示例 | 示例返回结果 |
| | | 合并两个节点集合 | //book | //cd | 返回所有元素 book 和 cd |
| + | 加法运算 | 9 + 3 | 12 |
| - | 减法运算 | 9 - 3 | 6 |
| * | 乘法运算 | 9 * 3 | 27 |
| div | 除法运算 | 9 div 3 | 3 |
| = | 等于 | price=99.00 | true 或 false |
| != | 不等于 | price!=99.00 | true 或 false |
| < | 小于 | price<99.00 | true 或 false |
| <= | 小于等于 | price<=99.00 | true 或 false |
| > | 大于 | price>99.00 | true 或 false |
| >= | 大于等于 | price>=99.00 | true 或 false |
| or | 或逻辑 | price=99.00 or price=100.00 | true 或 false |
| and | 与逻辑 | price>99.00 and price<100.00 | true 或 false |
| mod | 取模(取除法运算的余数) | 5 mod 2 | 1 |
转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。