Xpath 笔记

XPath Document

http://www.w3schools.com 这个常去吧!

Selecting Nodes

XPath uses path expressions to select nodes in an XML document. The node is selected by following a path or steps. The most useful path expressions are listed below:

Expression

Description

nodename

Selects all child nodes of the named node

/

Selects from the root node

//

Selects nodes in the document from the current node that match the selection no matter where they are

.

Selects the current node

..

Selects the parent of the current node

@

Selects attributes

 

Path Expression

Result

Bookstore Expression1()

Selects all the child nodes of the bookstore element

/bookstore

Expression2()

Selects the root element bookstore

Note: If the path starts with a slash ( / ) it always represents(代表) an absolute path to an element!

bookstore/book Expression3()

Selects all book elements that are children of bookstore

//book Expression4()

Selects all book elements no matter where they are in the document

bookstore//book

Expression5()

Selects all book elements that are descendant of the bookstore element, no matter where they are under the bookstore element

//@lang Expression6()

Selects all attributes that are named lang

 

 

Predicates (断言)

Path Expression

Result

/bookstore/book[1]

Selects the first book element that is the child of the bookstore element.

Note: IE5 and later has implemented that [0] should be the first node, but according to the W3C standard it should have been [1]!!

/bookstore/book[last()]

Selects the last book element that is the child of the bookstore element

/bookstore/book[last()-1]

Selects the last but one book element that is the child of the bookstore element

/bookstore/book[position()<3]

Selects the first two book elements that are children of the bookstore element

//title[@lang]

Selects all the title elements that have an attribute named lang

//title[@lang='eng']

Selects all the title elements that have an attribute named lang with a value of 'eng'

/bookstore/book[price>35.00]

Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00

/bookstore/book[price>35.00]/title

Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00

 

 

 

 

 

 

Selecting Unknown Nodes

XPath wildcards can be used to select unknown XML elements.

Wildcard

Description

*

Matches any element node

@*

Matches any attribute node

node()

Matches any node of any kind

Examples:

In the table below we have listed some path expressions and the result of the expressions:

Path Expression

Result

/bookstore/*

Selects all the child nodes of the bookstore element

//*

Selects all elements in the document

//title[@*]

Selects all title elements which have any attribute

 

 

Selecting Several Paths

By using the | operator in an XPath expression you can select several paths.

Examples

In the table below we have listed some path expressions and the result of the expressions:

Path Expression

Result

//book/title | //book/price

Selects all the title AND price elements of all book elements

//title | //price

Selects all the title AND price elements in the document

/bookstore/book/title | //price

Selects all the title elements of the book element of the bookstore element AND all the price elements in the document

 

 

 

XPath Axes(轴)

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>

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/...

 

 

axisname::nodetest[predicate]

Examples

Example

Result

child::book

Selects all book nodes that are children of the current node

attribute::lang

Selects the lang attribute of the current node

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

ancestor::book

Selects all book ancestors of the current node

ancestor-or-self::book

Selects all book ancestors of the current node - and the current as well if it is a book node

child::*/child::price

Selects all price grandchildren of the current node

 

 

 

 

XPath Operators

An XPath expression returns either a node-set, a string, a Boolean, or a number.

Below 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

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

 

 

posted @ 2010-07-02 16:10  稽首本然  阅读(250)  评论(0编辑  收藏  举报