Consultado Documentos XML
com XPATH
Vânia Maria Ponte Vidal
[email protected]
XPATH





É linguagem para referenciar partes de um
documento XML.
Define uma biblioteca de funções padrões para
trabalhar com strings, números e booleanos.
Foi projetada para ser usada por XSLT, XPointer e
outros softwares.
Sem XPath não seria possível criar documentos
XSLT.
Modela um documento XML como uma árvore de
nós: nó elemento, nó atributo, nó texto, etc.
XPATH




XPath usa expressões de caminho para identificar
nós num documento XML.
Expressões de caminho são parecidas com as
expressões de caminho usadas no sistema de
arquivo de um computador.
Se o caminho XPath começa com uma barra(/),
significa um caminho absoluto para o elemento.
Se o caminho XPath começa com duas barras(//),
significa que todos os elementos que satisfizerem
o critério serão selecionados, ainda se eles
estiverem em diferentes níveis na árvore.
ESTUDO DE CASO I
Elemento Raiz
<!ELEMENT livraria (livro)+>
<!ELEMENT livro
(titulo,editora,preço,autor+)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT editora (#PCDATA) >
<!ELEMENT preco (#PCDATA) >
<!ELEMENT autor
(email?,nome)>
<!ELEMENT email (#PCDATA) >
<!ELEMENT nome (#PCDATA) >
<!ATTLIST livro ISBN CDATA
#REQUIRED]>
livraria
livro
@ISBN titulo editora preço
livro
autor
email
1234 Inside New 100,00
XML Riders
[email protected]
autor
nome email
Holzner
[email protected]
Definição da DTD:
livraria.dtd
nome
Steven
XPATH

Exemplo(1)

Obtenha todas as informações do livro cujo
título é “Inside XML”.
document(“liv.xml” ) / livraria / livro[titulo =“Inside XML”]
XPATH

Exemplo(2)

Obtenha as informações dos autores do livro
cujo título é “Inside XML”.
$liv / livraria / livro [titulo =“Inside XML”] / autor
$liv= document(“liv.xml” )
XPATH

Exemplo(3)

Liste os livros de autoria de Steven
$liv / livraria / livro [autor/nome =“steven”]
XPATH

Exemplo(4)

Liste o título dos livros de autoria de Steven
$liv / livraria / livro [autor/nome =“steven”]/titulo
$liv / livraria / livro [autor/nome =“steven”]/titulo/text()
XPATH

Exemplo(5)

Liste ISBN, título e editora dos livros cujo o
autor é “Steven”
XPATH

Exemplo(6)

Liste o isbn dos livros de autoria de Steven
$liv / livraria / livro [autor/nome =“steven”]/@isbn
Nomes de atributos são
precedidos com @
$liv / livraria / livro [autor/nome =“steven”]/@*
Obtém todos os atributos do
elemento no contexto corrente
Estudo de Caso II
<catalogo>
<cd pais =“Brasil”>
<titulo>Milagreiro</titulo>
<artista>Djavan</artista>
<preco>15,00</preco>
</cd>
<cd pais =“Brasil”>
<titulo>O mito</titulo>
<artista>Elis Regina</artista>
<preco>20,00</preco>
</cd>
<cd pais =“Brasil”>
<titulo>Realce</titulo>
<artista>Gilberto Gil</artista>
<preco>15,00</preco>
</cd>
</catalogo>
catalogo
<cd pais=“Brasil”>
<titulo>
Milagreiro
<artista>
Djavan
<preco>
15,00
<cd pais=“Brasil”>
<titulo>
O mito
<artista>
Elis Regina
<preco>
20,00
<cd pais=“Brasil”>
<titulo>
Realce
<artista>
Gilberto Gil
<preco>
15,00
Xpath

Selecionar todos os elementos filhos de
todos os elementos cd do elemento
catalogo .
$catalogo / catalogo / cd / *
Curingas podem ser usados para
selecionar elementos XML desconhecidos.


Selecionar todos os
elementos preço que
são elementos netos
do elemento catalogo:
 $catalogo
/catalogo/*/preço
Selecionar todos os
elementos preco que
têm dois ancestrais:

$catalogo /*/*/preco
catalogo
<cd pais=“Brasil”>
<titulo>
Milagreiro
<artista>
Djavan
<preco>
15,00
<cd pais=“Brasil”>
<titulo>
O mito
<artista>
Elis Regina
<preco>
20,00
<cd pais=“Brasil”>
<titulo>
Realce
<artista>
Gilberto Gil
<preco>
15,00
Xpath

Obtenha o primeiro elemento
cd filho do elemento
catalogo
catálogo:
<cd pais=“Brasil”>


$catalogo /catalogo/cd[1]
Obtenha o último elemento
cd filho do elemento
catálogo:

$catalogo/catalogo/cd[last()]
<titulo>
Milagreiro
<artista>
Djavan
<preco>
15,00
...
<cd pais=“Brasil”>
<titulo>
Realce
<artista>
Gilberto Gil
<preco>
15,00

Selecionar todos os elementos
cd filho do elemento catálogo
que têm um elemento preco:
catalogo
$cat /catalogo/cd[preco]
• Selecionar todos os elementos cd
filho do elemento catálogo que
têm um elemento preco com o
valor de 15,00:
$cat /catalogo/cd[preco=15,00]
<cd pais=“Brasil”>
<titulo>
Milagreiro
<artista>
Djavan
<preco>
15,00
<cd pais=“Brasil”>
<titulo>
O mito
<artista>
Elis Regina
<preco>
20,00
<cd pais=“Brasil”>
•Selecionar todos os elementos preco
dos elementos cd cujo elemento preco
com valor de 15,00:
/catalogo/cd[preco=15,00]/preco
<titulo>
Realce
<artista>
Gilberto Gil
<preco>
15,00
Selecionar todos os
atributos pais:

catalogo
$cat//@país
Selecionar todos os
elementos cd que tem um
atributo pais:

$cat //cd[@país]
Selecionar todos os
elementos cd que tem algum
atributo:

$cat //cd[@*]
<cd pais=“Brasil”>
<titulo>
Milagreiro
<artista>
Djavan
<preco>
15,00
<cd pais=“Brasil”>
<titulo>
O mito
<artista>
Elis Regina
<preco>
20,00
<cd pais=“Brasil”>
<titulo>
Realce
<artista>
Gilberto Gil
<preco>
15,00
XPATH

Pode-se selecionar pai, filhos e irmãos, usando as
expressões:
parent:: - Pai do elemento contexto
 child:: - filho do elemento contexto
 preceding-sibling:: - irmão que precede
 following-sibling:: - irmão que segue



Ancestor:: - ancestrais do elemento contexto
Descendante::- descendentes do elemento
contexto.
Download

XPath (30/05/06)