原文:http://www.opendl.com/openxml/w3/TR/xpath/xpath-gb.html
例子:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
下面是我认为对我最有用的部分
这是一些使用缩简句法的地址路径例子:
-
para
选择上下文节点的para
元素孩子 -
*
选择上下文节点的所有的元素孩子 -
text()
选择上下文节点的所有的正文节点孩子 -
@name
选择上下文节点的name
属性 -
@*
选择上下文节点的所有的属性 -
para[1]
选择上下文节点的第一个para
孩子 -
para[last()]
选择上下文节点的最后一个para
孩子 -
*/para
选择上下文节点的所有的para
孙子 -
/doc/chapter[5]/section[2]
选择doc的第五个chapter
的第二个section
-
chapter//para
选择上下文节点的chapter
元素孩子的所有para
元素子孙 -
//para
选择文档根的所有的para
子孙,也就是选择上下文节点所在的文档中所有的para
元素 -
//olist/item
选择上下文节点所在的文档中所有的以olist
为父的item
元素 -
.
选择上下文节点 -
.//para
选择上下文节点的para
元素子孙 -
..
选择上下文节点的父 -
../@lang
选择上下文节点的父的lang
属性 -
para[@type="warning"]
选择的上下文节点的所有的有属性type
且值为warning
的para
孩子 -
para[@type="warning"][5]
选择的上下文节点的所有的有属性type
且值为warning
的para
孩子中的第五个 -
para[5][@type="warning"]
选择的上下文节点的第五个para
孩子如果该节点有属性type
且值为warning
的话 -
chapter[title="Introduction"]
选择上下文节点的chapter
孩子如果它有一个或多个title
孩子且字串值为Introduction
-
chpater[title]
选择的上下文节点中有一个或一个以上title
孩子的chpater
孩子 -
employee[@secretary and @assistant]
选择上下文节点的所有既有secretary
属性又有assistant
属性的employee
孩子
最重要的缩写是 child::
能从地点步进省略掉。实际效果上,child
是缺省轴。例如,地址路径 div/para
是 child::div/child::para
的缩写。
属性也有缩写形式: attribute::
能被缩写成 @
。例如,地址路径 para[@type="warning"]
为 child::para[attribute::type="warning"]
的缩写,也就是选择有 type
属性且属性值为 warning
的 para
孩子。
//
是 /descendant-or-self::node()/
的缩写。例如,//para
是 /descendant-or-self::node()/child::para
的缩写,因此选择文档中所有的 para
元素(即使 para
元素是文档元素,也会被 //para
所选择,因为文档元素是根节点的孩子); div//para
是 div/descendant-or-self::node()/child::para
的缩写,因此将选择 div
孩子的所有 para
子孙。
注意:
地址路径 //para[1]
与地址路径 /descendant::para[1]
的含意不一样,后者选择第一个 para
元素子孙,前者选择是他们的父的第一 para
孩子的所有的子孙 para
元素。
地点路进 .
是 self::node()
的缩写。这与 //
一起使用特别有用。例如,地址路径 .//para
是 self::node()/descendant-or-self::node()/child::para
的缩写,因此将选择上下文节点的所有的 para
子孙元素。
同样,地址路径 ..
是 parent::node()
的缩写。例如,../title
是 parent::node()/child::title
的缩写因此这将选择上下文节点的父的 title
孩子。