XPath usa expressões de caminho para selecionar nós ou conjuntos de nós em um documento XML. O nó é seleccionado, seguindo um caminho ou passos.
O Exemplo documento XML
Nós vamos usar o seguinte documento XML nos exemplos abaixo.
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
selecionando nós
XPath usa expressões de caminho para selecionar nós em um documento XML. O nó é seleccionado, seguindo um caminho ou passos. As expressões de caminho mais úteis estão listados abaixo:
Expressão | Descrição |
---|---|
nodename | Seleciona todos os nós com o nome " nodename " |
/ | Seleciona a partir do nó raiz |
// | Seleciona os nós do documento a partir do nó atual que correspondam a seleção não importa onde eles estão |
. | Seleciona o nó atual |
.. | Seleciona o pai do nó atual |
@ | seleciona atributos |
Na tabela abaixo listamos algumas expressões de caminho e o resultado das expressões:
Expressão caminho | Resultado |
---|---|
livraria | Seleciona todos os nós com o nome de "bookstore" |
/livraria | Seleciona o elemento raiz livraria Note: Se o caminho começa com uma barra ( / ) ele sempre representa um caminho absoluto para um elemento! |
livraria / livro | Seleciona todos os elementos do livro que são filhos de livraria |
//livro | Seleciona todos os elementos do livro não importa onde eles estão no documento |
livraria // livro | Seleciona todos os elementos do livro que são descendente do elemento livraria, não importa onde eles estão sob o elemento livraria |
// @ lang | Seleciona todos os atributos que são nomeados lang |
predicados
Predicados são usados para encontrar um nó específico ou um nó que contém um valor específico.
Predicados são sempre incorporados em colchetes.
Na tabela abaixo listamos algumas expressões de caminho com predicados e o resultado das expressões:
Expressão caminho | Resultado |
---|---|
/ Livraria / livro [1] | Seleciona o primeiro elemento de livro que é o filho do elemento livraria. Note: No IE 5,6,7,8,9 primeiro nó é [0], mas de acordo com W3C, é [1]. Para resolver este problema no IE, defina o SelectionLanguage para XPath: In JavaScript: xml . setProperty("SelectionLanguage","XPath") ; |
/ livraria / livro [ last() ] | Seleciona o último elemento livro que é o filho do elemento livraria |
/ livraria / livro [ last() -1] | Seleciona o penúltimo livro elemento que é o filho do elemento livraria |
/ livraria / livro [ position() <3] | Seleciona os dois primeiros elementos do livro que são filhos do elemento livraria |
// título [@ lang] | Seleciona todos os elementos do título que têm um atributo chamado lang |
// título [@ lang = 'en'] | Seleciona todos os elementos do título que têm um atributo "lang" com um valor de "en" |
/bookstore/book[price>35.00] | Seleciona todos os elementos do livro do elemento livraria que tem um elemento price com um valor maior que 35,00 |
/bookstore/book[price>35.00]/title | Seleciona todos os elementos do título dos elementos do livro do elemento livraria que tem um elemento price com um valor maior que 35,00 |
A seleção não informada Nodes
wildcards XPath pode ser usado para selecionar nós XML desconhecidos.
Wildcard | Descrição |
---|---|
* | Corresponde a qualquer nó de elemento |
@* | Corresponde a qualquer nó de atributo |
node() | Corresponde a qualquer nó de qualquer tipo |
Na tabela abaixo listamos algumas expressões de caminho e o resultado das expressões:
Expressão caminho | Resultado |
---|---|
/livraria/* | Seleciona todos os nós de elemento filho do elemento livraria |
// * | Seleciona todos os elementos no documento |
//título[@*] | Seleciona todos os elementos do título que têm pelo menos um atributo de qualquer tipo |
Selecionando Vários Caminhos
Ao utilizar o | operador em uma expressão XPath você pode selecionar vários caminhos.
Na tabela abaixo listamos algumas expressões de caminho e o resultado das expressões:
Expressão caminho | Resultado |
---|---|
// book / title | // book / preço | Seleciona todos os elementos do título e preço de todos os elementos do livro |
// título | //preço | Seleciona todos os elementos do título e preço no documento |
/ Livraria / livro / title | //preço | Seleciona todos os elementos title do elemento de livro do elemento livraria e todos os elementos de preços no documento |