Consultando Documentos XML com XQUERY Vânia Maria Ponte Vidal

Slides:



Advertisements
Apresentações semelhantes
Python: Funções Claudio Esperança.
Advertisements

Object Query Language - OQL
Introdução Marcus Vinícius Carneiro Teixeira.
Banco de Dados Prof. Antonio.
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
SQL Structured Query Language (continuação)
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
XML (eXtensible Markup Language) W3C - World Wide Web Consortium Documentos TXT estruturados? Por que XML? XML, ou eXtensible Markup Language, é uma linguagem.
Teste de Software Parte 3.
Vânia Maria Ponte Vidal
Consultado Documentos XML com XPATH
Gerenciamento de Dados XML
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Operadores Especiais da SQL
Pesquisa em Memória Primária
Pesquisa em Memória Primária
Linguagem C Estruturas de Controle de Fluxos
Tecnologia para Web JavaScript
Instrutor: Nilo Menezes
Revisão da Linguagem C.
Capítulo 10 Strings & File I/O. Strings Strings são um conjunto de Caracteres ASCII. No Controle de Instrumentação pode-se converter valores numéricos.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Jquery – Parte 3 Linguagem de scripts.
Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
XML Extended Markup Language
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
XQuery (2ª parte) Helena Galhardas DEI IST (baseado nos slides de Ioana Manolescu, acessíveis em:
Hibernate: Consultas Francisco do Nascimento
Banco de Dados Aplicado ao Desenvolvimento de Software
© CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa CIn – UFPE Recife-PE, 3 de julho de 2003.
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Treinamento sobre SQL.
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
Analise sintática aula-07-analise-sintática.pdf.
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Busca Combinatorial e Métodos de Heurística
Tradução Dirigida por Sintaxe
Treinamento SQL Server
©Silberschatz, Korth and Sudarshan (modificado)10.1.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
Faculdade Pernambucana - FAPE Setembro/2007
Produção de Sites Unidade 9 – XML Prof.: Henrique Santos.
Linguagem SQL Prof. Juliano.
Linguagens Formais - aula 02
Primeiro Trabalho Prático de GTI 2008/09 Resolução.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Validando Documentos XML Vânia Maria Ponte Vidal
XML Namespaces XML Namespaces provê um método para evitar conflito de nomes de elementos.
1 XSL - eXtensible Stylesheet Language. 2 XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes,
XML – Extensible Markup Language [Sintaxe] Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli.
XML: Conceitos, Tecnologias e Aplicações Vânia Maria Ponte Vidal
Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a.
SQL SERVER XML Guia Essencial para Programação com XML no SQL Server.
Daniel Paulo SQL Módulo I Daniel Paulo
Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
Shell Script Parte 2.
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Array e ArrayList LPOO – 01/09/14.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Revisão Turma – WEB JavaScript.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
Design para Web 3 XHTML.
Transcrição da apresentação:

Consultando Documentos XML com XQUERY Vânia Maria Ponte Vidal

Por que uma linguagem de Consulta para XML? Consultar bases de dados XML tornou-se necessário dado que grandes quantidades de dados estão sendo armazenados utilizando XML. Dados XML são diferentes dos dados de bancos de dados relacionais ou orientados a objetos pois os dados XML não seguem uma estrutura rígida. Devido a flexibilidade da XML, linguagens de consultas convencionais não são adequadas para especificar consultas em documentos XML

Linguagens de Consulta para XML LOREL: foi projetada inicialmente para consultar dados semi-estruturados e recentemente foi estendida para manipulação de dados XML. É uma linguagem baseada em OQL. XML-QL: estende linguagem SQL com uma cláusula explícita CONSTRUCT que permite a construção de documentos como resultado de consulta XML-GL: linguagem de consulta gráfica que tem como base uma representação em grafos de documentos XML e DTDs

Linguagens de Consulta para XML XSL (Extensible Stylesheet Language): utiliza a linguagem XPath para selecionar os elementos a serem processados e para geração de textos XQL: pode ser considerada uma extensão da sintaxe da XSL e foi projetada com o objetivo de ser sintaticamente mais simples e compacta, entretanto com o poder de expressão reduzido

XQuery XML Query Language Proposta pela W3C e agrega características de diversas outras linguagens de consulta para XML, bem como SQL e OQL É uma linguagem funcional na qual a consulta é representada como uma expressão Utiliza o conceito de expressões de caminho para navegar em árvores Xquery é flexível o suficiente para consultar vários tipos de fontes de informação XML incluindo bancos de dados e documentos

XQuery - Conceitos Uma consulta em XQuery é uma expressão que: Lê um n ú mero de documentos XML ou fragmentos de documentos XML Retorna uma seq ü ência de fragmentos XML bem- formados Expressões XQuery podem ser: Expressões de caminho Construtores de elementos Expressões FLWR Expressões condicionais Expressões com quantificadores

XQuery – Expressões de Caminho Consiste de uma série de passos. Cada passo pode aplicar um ou mais predicados para eliminar nós que não satisfazem uma determinada condição Uma expressão de caminho pode começar com uma expressão que identifica um nó específico, como a função document (string), que retorna o nó raiz de um dado documento Uma expressão de caminho também pode começar com “/” ou “//”, que representa um nó raiz implícito, determinado pelo ambiente no qual a consulta está sendo executada.

Expressões de Caminho - Exemplo document(“livro.xml”) / doc // figura[titulo= “Fig1”] Q1: Obtenha todas as figuras cujo título é “Fig1” A função document lê um arquivo XML e retorna o nó raiz do documento procura um elemento figura em qualquer profundidade depois do elemento doc doc capitulo * parte * figura titulo numero

Expressões FLWR FOR e LET: associam valores a uma ou mais variáveis WHERE: expressão condicional RESULT: retorna o resultado FLWR = FOR-LET-WHERE-RETURN Consiste de uma seqüência de um ou mais cláusulas FOR e/ou LET, seguidas por um WHERE opcional e terminada por um RETURN

Expressões FLWR - Exemplo FOR $l IN document(“livraria.xml”)//livro[autor/pri_nome = “José”] RETURN $l/titulo Q2: Obtenha os títulos dos livros cujo primeiro nome do autor é “José” livraria livros livro* autor pri_nome sobrenome titulo FOR $l IN document(“livraria.xml”)//livro WHERE $l/autor/pri_nome = “José” RETURN $l/titulo

Construção de Elementos Q3:Gerar documento XML cuja raiz é o elemento livros o qual contém todos os títulos dos livros cujo autor tem como primeiro nome “José” { FOR $l IN document (“livraria.xml”)//livro WHERE $l/autor/pri_nome = “José” RETURN $l/titulo } constrói um elemento livros

FLWR - Exemplo Q4: Obter o ano e o título de todos os livros publicados pela editora Addison-Wesley depois de livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço { FOR $l IN document(doc.xml)/livraria/livro WHERE $l/editora = “Addison-Wesley” and > 1991 RETURN {$l/titulo} é utilizado para acessar o valor do atributo Expressão de caminho

FLWR - Exemplo Q5: Criar elemento resultado contendo conjunto de elementos livroWesley (os livros publicados pela Addison-Wesley ), o qual contém o título e autor do livro. { FOR $l in document(“doc.xml")/livraria/livro, WHERE $l/editora = “Addison-Wesley” RETURN {($l/titulo, $l/autor )} } livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço

FLWR - Exemplo livro1.xml { FOR $s in document(“livro1.xml")//seção RETURN <seção titulo="{ $s/titulo/text() }" figcont="{ count($s/figura )}”/> } retorna apenas o conteúdo do elemento (sem as tags) Q6: criar elemento listaSeções o qual contém, para cada elemento seção de livro1.xml, um elemento seção contendo dois atributos título e figcont cujo valor é o número de figuras contidas na seção. seção + autor titulo figura * titulo

Ordenando Algumas vezes é necessário controlar a ordem dos elementos na sequência Uma seqüência pode ser ordenada utilizando a cláusula SORTBY, que pode conter uma ou mais expressões ordenadas Cada expressão ordenada pode vir seguida de uma palavra chave Ascending (default) descending

Ordenando - Exemplo Q7: Obtenha o título e o ano de todos os livros publicados pela editora Addison-Wesley depois de 1991 e em ordem alfabética livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço { FOR $l IN document(doc.xml)/livraria/livro WHERE $l/editora = “Addison-Wesley” and > 1991 RETURN {$l/titulo} SORT BY (titulo) }

Expressões Condicionais XQuery suporta expressões condicionais baseadas em if, then, else Expressões condicionais são úteis quando a estrutura da informação a ser retornada depende de alguma condição As expressões condicionais podem ser aninhadas e podem ser usadas em qualquer lugar onde um valor é esperado

Expressões Condicionais - Exemplo { FOR $l IN document(“Livraria.xml”)//livro RETURN { ($l/titulo, FOR $a in $l/autor[position( )<= 2] RETURN $a, IF (count($l/autor) >2) THEN ELSE ( ))} } expressão condicional Retorna a posição do elemento elemento vazio Q8: Gerar elemento contendo o título e os dois primeiros autores dos livros. Se o livro tem outros autores então acrescentar o elemento vazio livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço

Expressões com Quantificadores Ocasionalmente é necessário testar se algum elemento ou todos elementos de uma coleção satisfaz uma condição Para isso utilizamos o quantificador existencial (some) e o quantificador universal (every)

Expressões com Quantificadores {FOR $a IN distinctvalues(document(“livraria.xml”)//autor) RETURN {($a, {FOR $l IN document(“livraria.xml”)/livraria/livro WHERE some $la IN $l/autor satisfies deep-equal($la,$a) RETURN $l/titulo) } } deep-equal( ) testa se dois nós tem a mesma estrutura e os mesmos valores Retorna somente valores distintos Q9: Gerar elemento contendo para cada autor, o nome e os títulos de todos os livros do autor. Estes últimos, devem estar agrupados dentro de um elemento livrosDoAutor. livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço

Expressões com Quantificadores Q10 :Obtenha os títulos dos livros que tem “ótimo” em todos os comentários {for $l in //livro where every $c in $l/comentario contains($c, “ótimo”) return $l/titulo } quantificador universal livro titulo autor pri_nome sobrenome comentario * livraria

Funções Funções pré-definidas que podemos utilizar nas consultas XQuery (Xpath) concatConcatena duas ou mais strings starts-withIndica se o valor de uma string começa com o caracter do valor da outra string ends-withIndica se o valor de uma string termina com o caracter do valor da outra string containsIndica se o valor de uma string contém caracteres iguais ao valor da outra string string-lengthRetorna o tamanho da string substring – before Retorna os caracteres de uma string que precedem os caracteres que são iguais aos outra string substring – after Retorna os caracteres de uma string que que vem depois dos caracteres que são iguais aos outra string

Funções - Exemplo Para cada livro contendo algum elemento cuja “label” termina com a string “or” e cujo conteúdo contém a string “José”, faça: - Retorne o título do livro e o elemento encontrado for $l in document(“ let $e:= $l/* [contains(string(.),”José”) and ends-with(local-name(.),”or”)] where exists($e) return { $l/titulo } { $e } * pega qualquer sub-elemento Indica que é o nome do elemento e não o conteúdo do elemento Procura a string no nó atual Q11: livro* livraria titulo ano autor+ pri_nome sobrenome editor+ associação editora pri_nome sobrenome preço

Funções - Exemplo seção + autor titulo figura * titulo seção * Liste todos os elementos seção preservando seus atributos e hierarquia. Dentro de cada seção coloque o título da seção e um elemento com o número de figuras contidos imediatamente naquela seção define function resumo_seção (element $s) returns element { { $s/title, { count($s/figura) }, for $ss in $s/seção return resumo_seção($ss) )} } { for $s in document(“livro.xml")/livro/seção return resumo_seção ($s)} * Obtém todos os atributos de seção Q12:

XQuery Uma consulta em XQuery é uma expressão que: Lê um n ú mero de documentos XML ou fragmentos de documentos XML Retorna uma seq ü ência de fragmentos XML bem- formados Expressões XQuery podem ser: Expressões de caminho Construtores de elementos Expressões FLWR Expressões condicionais Expressões com quantificadores

ESTUDO DE CASO autor StevenHolzner nome livro nome autor livraria 1234 Inside XML New Riders 100,00 Elemento Raiz autor (*) Vide XML Schema em arquivo separado

XQuery {FOR $q IN document(“liv.xml” ) / livraria / livro[titulo =“Inside XML”] RETURN { } } Expressões FLWR – Exemplo (1) - Obtenha ISBN, título e editora do livro cujo título é “Inside XML”.

XQuery { FOR $q IN document("Livraria.xml")/livraria/livro LET $p := document("Livraria.xml")/livraria/autor[nome="Steven"] WHERE $q/autor = $p/ RETURN $q/titulo } Expressões FLWR – Exemplo (2) - Obtenha o titulo dos livros de autoria de Steven.