Sintaxe XPath

XPath usa expressões de caminho para selecionar nós ou conjuntos de nós em documentos XML. Os nós são selecionados seguindo o caminho (path) ou os passos (steps).

Documento de exemplo XML

Vamos usar este documento XML nos exemplos a seguir.

<?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>

Selecionar nó

XPath usa expressões de caminho para selecionar nós em documentos XML. Os nós são selecionados seguindo o caminho ou o passo.

A seguir, listamos as expressões de caminho mais úteis:

Expressão Descrição
nodename Selecionar todos os nós filhos deste nó.
/ Selecionar a partir do nó raiz.
// De um nó atual correspondente, escolher nós no documento, independentemente de sua posição.
. Selecionar o nó atual.
.. Selecionar o nó pai do nó atual.
@ Selecionar atributo.

Exemplo

A seguir, na tabela, listamos algumas expressões de caminho e seus resultados:

Expressão de Caminho Resultados
bookstore Selecionar todos os nós filhos do elemento 'bookstore'.
/bookstore

Selecionar o elemento raiz 'bookstore'.

Nota: Se o caminho começa com uma barra invertida (/), este caminho sempre representa o caminho absoluto até um elemento!

bookstore/book Selecionar todos os elementos 'book' que sejam filhos do elemento 'bookstore'.
//book Selecionar todos os elementos 'book' filhos, independentemente de sua posição no documento.
bookstore//book Selecionar todos os elementos 'book' descendentes do elemento 'bookstore', independentemente de sua posição.
//@lang Selecionar todas as propriedades chamadas 'lang'.

Predicados (Predicados)

O predicado é usado para encontrar um nó específico ou um nó que contém um valor específico.

O predicado está entre colchetes.

Exemplo

A seguir, na tabela, listamos alguns expressões de caminho com predicados e seus resultados:

Expressão de Caminho Resultados
/bookstore/book[1] Selecionar o primeiro elemento 'book' filho do elemento 'bookstore'.
/bookstore/book[last()] Selecionar o último elemento 'book' filho do elemento 'bookstore'.
/bookstore/book[last()-1] Selecionar o segundo elemento 'book' filho do elemento 'bookstore', contando da última posição.
/bookstore/book[position()<3] Selecionar os dois primeiros elementos 'book' que sejam filhos do elemento 'bookstore'.
//title[@lang] Selecionar todos os elementos 'title' que tenham a propriedade 'lang'.
//title[@lang='eng'] Selecionar todos os elementos 'title' que tenham a propriedade 'lang' com valor 'eng'.
/bookstore/book[price>35.00] Selecionar todos os elementos 'book' dentro do elemento 'bookstore', cujo elemento 'price' tenha um valor maior que 35.00.
/bookstore/book[price>35.00]/title Selecionar todos os elementos title do elemento book dentro do elemento bookstore, cujo valor do elemento price deve ser maior que 35.00.

Selecionar Nó Desconhecido

Os símbolos de substituição XPath podem ser usados para selecionar elementos XML desconhecidos.

Símbolo de Substituição Descrição
* Coincidir com qualquer nó de elemento.
@* Coincidir com qualquer nó de atributo.
node() Coincidir com qualquer tipo de nó.

Exemplo

A seguir, listamos algumas expressões de caminho e os resultados dessas expressões em uma tabela.

Expressão de Caminho Resultados
/bookstore/* Selecionar todos os elementos filhos do elemento bookstore.
//* Selecionar todos os elementos no documento.
//title[@*] Selecionar todos os elementos title com atributos.

Selecionar Vários Caminhos

Ao usar o operador "|" em expressões de caminho, você pode selecionar vários caminhos.

Exemplo

A seguir, listamos algumas expressões de caminho e os resultados dessas expressões em uma tabela.

Expressão de Caminho Resultados
//book/title | //book/price Selecione todos os elementos title e price do elemento book.
//title | //price Selecione todos os elementos title e price no documento.
/bookstore/book/title | //price Selecione todos os elementos title pertencentes ao elemento bookstore e todos os elementos price no documento.