2007年5月4日星期五

XSL 简明教程(四)—— XPath 简明教程(3)

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返回所有元素 bookcd 的节点集合
+加法运算9 + 312
-减法运算9 - 36
*乘法运算9 * 327
div除法运算9 div 33
=等于price=99.00true 或 false
!=不等于price!=99.00true 或 false
<小于price<99.00true 或 false
<=小于等于price<=99.00true 或 false
>大于price>99.00true 或 false
>=大于等于price>=99.00true 或 false
or或逻辑price=99.00 or price=100.00true 或 false
and与逻辑price>99.00 and price<100.00true 或 false
mod取模(取除法运算的余数)5 mod 21

转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。


Copyright (C) 2007, XUE Can.

Creative Commons License 本博客作品(包括但不限于文字、图像、音频、视频以及动画),采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。 转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。