Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of contents

Expand
titleClick here to expand the table of contents
Table of Contents

...

It is a flexible and powerful language for querying xml or (x) html elements of a document and xslt transformations over the DOM, which is a W3C standard .

...

Code Block
//*[@id="w3c_home_upcoming_events"]/ul/li//a

Basic syntax

Paths

Expression

Description

.

current context

.//

recursive descent (zero or more levels from the current context)

/html/body

absolute path

a

relative path

//*

everything in the current context

li/*/a

links that are "grandchildren" for li

//a|//button

links and buttons (union of two sets of nodes)

Relations

Expression

Description

a/i/parent::p

immediate parent <p>

p/ancestor::*

all parents

p/following-sibling::*

all next brothers

p/preceding-sibling::*

all previous brothers

p/following::*

all of the following elements except descendants

p/preceding::*

all previous elements except ancestors

p/descendant-or-self::*

context node and all its descendants

p/ancestor-or-self::*

context node and all its ancestors

Getting nodes

Expression

Description

/div/text()

get text nodes

/div/text()[1]

get the first text node

Item position

Expression

Description

a[1]

first element

a[last()]

last element

a[2]

second link

a[position() <= 3]

first 3 links

ul[li[1]=”OK”]

list (UL) whose first element contains the value 'OK'

tr[position() mod 2 = 1]

odd elements

tr[position() mod 2 = 0]

even elements

p/text()[2]

second text node

Attributes and Filters

[] - indicates filtering items

Expression

Description

input[@type=”text”]

<input> tag with type attribute equal to text

input[@class='OK']

<input> tag whose class attribute is OK

p[not(@*)]

paragraphs without attributes

*[@style]

all elements with style attribute

a[. = “OK”] 

links with the value "OK"

a/@id

link identifiers

a/@*

all link attributes

  • a[@id and @rel]

  • a[@id][@rel]

links that contain id and rel attributes

a[i or b]

links contain an <i> or <b> element

Functions

Basic Xpath functions - http://www.w3.org/TR/xpath/#corelib

Function

Description

Example

name()

Returns the name of the element

[name()='a']

string(val)

Get attribute value

string(a[1]/@id)

substring(val, from, to)

Cut part of a line

substring(@id, 1, 6)

substring-before(val, to)

Return the part of the string val before the string to

substring-before('12-May-1998', '-') = '12'

substring-after(val, from)

Return part of string val after string to

substring-after('12-May-1998', '-') = 'May-1998'

string-length()

Returns the number of characters in a string

[string-length(text()) > 5]

count()

Returns the number of items

concat()

Takes two or more strings as input and returns the concatenation (string addition) of its arguments.

normalize-space() 

Analog Trim

[normalize-space(text())='SEARCH']

starts-with()

Starts with

[starts-with(text(), 'SEARCH')]

contains()

Contains

[contains(name(), 'SEARCH')]

translate(val, from, to)

Replaces the characters of its first string argument, which are present in the second argument, with the corresponding characters of the third argument.

translate(«bar»,«abc»,«ABC»)

Grouping

Expression

Description

(table/tbody/tr)[last()]

last <tr> row from all tables

(//h1|//h2)[contains(text(), 'Text')]

a first or second level heading that contains "Text"

a[//tr/@data-id=@data-id]

all links whose data-id attribute matches the same attribute for a table row

...