模式
模式是一种表达式,根据节点的一组条件返回一组节点。符合条件的节点与模式匹配。模式语法是表达式语法的一个子集。特别是,符合特定限制的位置路径可以作为模式使用。如果表达式同时也是模式,将总是计算为节点集类型的对象。如果某个节点是将模式作为表达式(与某些可能的上下文有关)的计算结果的成员,则表示该节点符合模式;这里可能的上下文是其上下文节点属于匹配节点或其上级之一的上下文。
下表列出了模式的示例。
模式 |
匹配 |
---|---|
Para |
任何 para 元素 |
* |
任何元素 |
chapter|appendix |
任何 chapter 元素和任何 appendix 元素 |
olist/item |
任何具有 olist 父级的 item 元素 |
appendix//para |
任何具有 appendix 祖先元素的 para 元素 |
/ |
根节点 |
text() |
任何文本节点 |
processing-instruction() |
任何处理指令 |
node() |
除了属性节点和根节点以外的任何节点 |
id("W11") |
具有唯一 ID W11 的元素 |
para[1] |
任何属于父级的第一个 para 子元素的 para 元素 |
*[position()=1 and self::para] |
任何属于父级的第一个子元素的 para 元素 |
para[last()=1] |
任何属于父级的唯一一个 para 子元素的 para 元素 |
items/item[position()>1] |
任何具有 items 父级但不是父级的第一个 item 子元素的 item 元素 |
item[position() mod 2 = 1] |
任何属于父级的奇数个 item 子元素的 item 元素 |
div[@class="appendix"]//p |
任何 div 祖先元素具有值为 appendix 的 class 属性的 p 元素 |
@class |
任何 class 特性(不是 任何具有 class 特性的元素) |
@* |
任何属性 |