The XML Example Document
We will use the following XML document in the examples below.
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
XPath Axes
An axis defines a node-set relative to the current node.
一条主线指定了一系列的节点和当前节点的关系
| AxisName |
Result
|
| ancestor |
Selects all ancestors (parent, grandparent, etc.) of the current node
选择当前节点的所有的祖先,根,(父,父之父)
|
| ancestor-or-self |
Selects all ancestors (parent, grandparent, etc.) of the current node and the current node itself
选择当前节点所有的祖节点和自己
|
| attribute |
Selects all attributes of the current node
选择当前节点的所有属性
|
| child |
Selects all children of the current node
选择当前节点的所有子节点
|
| descendant |
Selects all descendants (children, grandchildren, etc.) of the current node
选择当前节点的所有胄(子,子之子等)
|
| descendant-or-self |
Selects all descendants (children, grandchildren, etc.) of the current node and the current node itself
选择当前节点的所有子节点和自己
|
| following |
Selects everything in the document after the closing tag of the current node
选择当前节点结束后的文档中的所有节点
|
| following-sibling |
Selects all siblings after the current node
选择当前节点后的所有同科节点
|
| namespace |
Selects all namespace nodes of the current node
选择当前节点的所有的名字空间
|
| parent |
Selects the parent of the current node
选择当前节点的所有父节点
|
| preceding |
Selects everything in the document that is before the start tag of the current node
选择文档中当前节点前的所有节点
|
| preceding-sibling |
Selects all siblings before the current node
选择当前节点前的所有同科节点
|
| self |
Selects the current node
选择当前节点
|
Location Path Expression位置表达式
A location path can be absolute or relative.
可以是绝对的也可以是相对的
An absolute location path starts with a slash ( / ) and a relative location path does not. In both cases the location path consists of one or more steps, each separated by a slash:
一个绝对的路径以"/"开始,两种表示式都有一级或多级构成,级用"/"分开
An absolute location path:
/step/step/...
A relative location path:
step/step/...
Each step is evaluated against the nodes in the current node-set.
每一级都是根据当前节点的在节点集的位置来执行的
A step consists of:级构成:
- an axis (defines the tree-relationship between the selected nodes and the current node) 主线(规定一个当前节点和所先节点的关系树)
- a node-test (identifies a node within an axis) 一个节点测试(在主线中辨认一个节点)
- zero or more predicates (to further refine the selected node-set) 一个或多个谓词(进一步挑选选定的节点集)
The syntax for a location step is:语法
axisname::nodetest[predicate]
Examples:
| Example |
Result
|
| child::book |
Selects all book nodes that are children of the current node
选择当前节点的所有的book节点
|
| attribute::lang |
Selects the lang attribute of the current node
选择当前节点的lang 属性
|
| child::* |
Selects all children of the current node
选择当前节点的所有子节点
|
| attribute::* |
Selects all attributes of the current node
选择当前节点的所有属性
|
| child::text() |
Selects all text child nodes of the current node
选择当前节点的所有文本子节点
|
| child::node() |
Selects all child nodes of the current node
选择当前节点的所有子节点
|
| descendant::book |
Selects all book descendants of the current node
选择当节点的所有book胄
|
| ancestor::book |
Selects all book ancestors of the current node
选择当前节点的所有book节点的祖,根
|
| ancestor-or-self::book |
Selects all book ancestors of the current node - and the current as well if it is a book node
选择当前节点的book元素的根节点或它自己(如果它也是一个book节点的话)
|
| child::*/child::price |
Selects all price grandchildren of the current node
|