XPath轴及运算符
An axis defines a node-set relative to the current node.
轴定义了相对于当前节的节集
文章目录
The XML Example Document
XML举例文档
We will use the following XML document in the examples below.
我么将使用该XML文档进行下面的举例说明
<?xml version=”1.0” encoding=”ISO-8859-1”?>
Harry Potter 29.99 </book>
Learning XML 39.95 </book>
</bookstore>
XPath Axes
XPath轴
轴名 | 结果 |
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)[0个或多个谓语可以来更好的选择节]
The syntax for a location step is:
定位的语法
axisname::nodetest[predicate]
Examples
实例
Example | 结果 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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::</td> Selects all children of the current node[选择当前节下所有的子节] </tr> | attribute::</em> | 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的节点] | child::*/child::price | Selects all price grandchildren of the current node[当前节点所有含price的孙子节点] </tbody> </table> | An XPath expression returns either anode-set, a string, a Boolean, or a number.</p> XPath OperatorsBelow is a list of the operators that can be used in XPath expressions: Operator | Description | Example | Return value | | | Computes two node-sets | //book | //cd | Returns a node-set with all book and cd elements | + | Addition | 6 + 4 | 10 | – | Subtraction | 6 – 4 | 2 | * | Multiplication | 6 * 4</p> | 24 | div | Division | 8 div 4 | 2 | = | Equal | price=9.80 | true if price is 9.80 | false if price is 9.90 != | Not equal | price!=9.80 | true if price is 9.90 | false if price is 9.80 < | Less than | price<9.80 | true if price is 9.00 | false if price is 9.80 <= | Less than or equal to | price<=9.80 | true if price is 9.00 | false if price is 9.90 > | Greater than | price>9.80 | true if price is 9.90 | false if price is 9.80 >= | Greater than or equal to | price>=9.80 | true if price is 9.90 | false if price is 9.70 or | or | price=9.80 or price=9.70 | true if price is 9.80 | false if price is 9.50 and | and | price>9.00 and price<9.90 | true if price is 9.80 | false if price is 8.50 mod | Modulus (division remainder) | 5 mod 2 | 1 | Let’s try to learn some basic XPath syntax by looking at some examples. 让我们来尝试通过观察一些实例来学习基础的XPath语法</p> The XML Example Document We will use the following XML document in the examples below. “books.xml”:
|