170 likes | 351 Views
Consultado Documentos XML com XPATH. Vânia Maria Ponte Vidal vvidal@lia.ufc.br . 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.
E N D
Consultado Documentos XML com XPATH Vânia Maria Ponte Vidal vvidal@lia.ufc.br
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 livraria <!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]> livro livro autor autor @ISBN titulo editora preço nome nome email email 1234 Inside XML New Riders 100,00 Holz@cs.br stev@cs.br Steven Holzner Definição da DTD: livraria.dtd
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
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 Gilberto Gil <artista> <preco> 15,00 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>
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.
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 Gilberto Gil <artista> <preco> 15,00 • 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> Realce <artista> Gilberto Gil <preco> 15,00 Xpath • Obtenha o primeiro elemento cd filho do elemento catálogo: • $catalogo /catalogo/cd[1] • Obtenha o último elemento cd filho do elemento catálogo: • $catalogo/catalogo/cd[last()]
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 Gilberto Gil <artista> <preco> 15,00 $cat /catalogo/cd[preco] • Selecionar todos os elementos cd filho do elemento catálogo que têm um elemento 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] • Selecionar todos os elementos preco dos elementos cd cujo elemento preco com valor de 15,00: /catalogo/cd[preco=15,00]/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 Gilberto Gil <artista> <preco> 15,00 • Selecionar todos os atributos pais: $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[@*]
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.