Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prtica
22/05/2009
1 / 33
Introduo e motivao
Prtica
Persistncia XML
XML: linguagem de marcao de dados, utilizada para troca, compartilhamento e armazenamento de dados XML no persistente: existe em algum momento em memria -> troca de dados dinmica entre aplicaes XML persistente: pode existir de duas maneiras:
Documento XML: arquivo em disco Banco de dados XML: coleo de dados em XML
2 / 33
Introduo e motivao
Prtica
Software de persistncia de dados que permite o armazenamento de dados no formato XML Dois tipos de banco de dados XML:
Com suporte a XML XML nativo
3 / 33
Introduo e motivao
Prtica
Mapeia todo XML para um banco de dados tradicional -> e.g., BD relacional Aceita XML como entrada Renderiza XML como sada O prprio banco de dados faz esta converso Ex: Postgre possui suporte a XML (biblioteca interna de manipulao XML)
4 / 33
Introduo e motivao
Prtica
Modelo interno depende de XML Possui documentos XML como unidade de armazenamento Apesar disso, tais documentos podem no estar armazenados necessariamente como texto! Podem utilizar a mesma estrutura fsica de armazenamento de BDs relacionais ou orientados a objeto Por qu? Tempo de resposta na consulta Hoje vamos focar em banco de dados XML nativos
5 / 33
Introduo e motivao
Prtica
6 / 33
Introduo e motivao
Prtica
Modelo de dados: MER Unidade de armazenamento lgica: tabela Estruturas de dados ou formatos proprietrios (e.g., arquivos comprimidos e indexados) Coleo de dados: banco de dados
7 / 33
Introduo e motivao
Prtica
Modelo de dados para o documento XML -> e.g., XPath (lembram da rvore e seus ns?) Unidade de armazenamento lgica: documento XML Estruturas de dados, formatos proprietrios (e.g., arquivos comprimidos e indexados) ou arquivos de texto Coleo de dados: a maioria oferece grupos de documentos XML, chamados colees
8 / 33
Introduo e motivao
Prtica
Manipulao de dados
Insero: cada SGBD possui seu conjunto de instrues (ponto negativo...) Consulta: grande maioria suporta XPath Exportao: formato XML, porm a maioria suporta Extensible Stylesheet Language Transformations - XSLT (permite output em XML, plain text, HTML, PDF, etc)
9 / 33
Introduo e motivao
Prtica
XPath
Linguagem bsica para consulta em XML Permite projeo e seleo sob ns XML Limitao: necessita que o fragmento XML (persistente ou no) seja previamente carregado S possibilita exportao em XML
10 / 33
Introduo e motivao
Prtica
XQuery
Basicamente XPath extendido para o XML o que o SQL para as tabelas de bancos de dados Desenvolvido para consultar dados em XML No apenas documentos em XML, mas qualquer coisa que se parea com XML Mais poderoso do que XPath M notcia: nem todos os SGBDs XML suportam XQuery Boa notcia: os melhores suportam!
11 / 33
Introduo e motivao
Prtica
Extrair informao para usar em um Web Service Gerar relatrios rpidos Transformar XML em XHTML Procurar informao relevante em documentos da Web
12 / 33
Introduo e motivao
Prtica
Estrutura de uma consulta SQL: SELECT FROM WHERE Estrutura de uma consulta bsica XQuery: FROM SELECT WHERE
13 / 33
Introduo e motivao
Prtica
14 / 33
Introduo e motivao
Prtica
Vamos praticar?
XPath
15 / 33
Introduo e motivao
Prtica
Projeo em ns
Projeo sob XML muito simples Basta indicar o caminho do(s) elemento(s) desejado(s) na rvore Projeo sob elementos: /bookstore/book/title Projeo sob atributos: /bookstore/book/@category
16 / 33
Introduo e motivao
Prtica
/: Projeo a partir da raiz //: Projeo de um n no importa onde ele esteja //author ..: Projeo do pai do n atual /bookstore/book/author/.. @: Projeo sob atributos //@lang text(): Projeo sob ns de texto /bookstore/book/author/text()
17 / 33
Introduo e motivao
Prtica
Seleo de ns
Uso de predicados para selecionar um n especco Selecionar n especco: book[2] -> seleciona segundo livro Selecionar ltimo n: author[last()] -> selecionar ltimo autor Selecionar todos os ns a partir de um determinado n: book[position() > 1] -> todos os livros aps o primeiro Selecionar todos os ns que possuem determinado atributo: //title[@lang]
18 / 33
Introduo e motivao
Prtica
Seleo de ns
Selecionar todos os ns que possuem determinado atributo com determinado valor: //title[@lang=eng] Selecionar todos os elementos que satisfazem uma condio: //book[price > 30.00] //book[price != 30]
19 / 33
Introduo e motivao
Prtica
Exerccios
Selecione a nota de Matemtica de todos os alunos Selecione o nome de todos os alunos que tiveram notas menores ou iguais a 5 Selecione o ttulo de todos os livros da categoria Web
20 / 33
Introduo e motivao
Prtica
possvel combinar condies Selecionar todos os livros com preo entre 20 e 35: //book[price > 20 and price < 35] Selecionar todos os livros com preo menor do que 20 ou maior do que 35: //book[price < 30 or price > 35]
21 / 33
Introduo e motivao
Prtica
Exerccios
Selecione o nome dos alunos que tiveram nota superior a 8 em portugus e menos de 2 faltas nesta disciplina
22 / 33
Introduo e motivao
Prtica
possvel selecionar mais de um caminho na rvore Selecionar todos os ttulos e preos dos livros: //book/title | //book/price
23 / 33
Introduo e motivao
Prtica
Funes XPath
Possui mais de 100 funes pr-denidas Funes para lidar com nmeros, strings, erros, entre outros Para saber mais: http://www.w3schools.com/Xpath/xpath_functions.asp
24 / 33
Introduo e motivao
Prtica
Vamos praticar?
XQuery
25 / 33
Introduo e motivao
Prtica
Consulas em XQuery
Tudo o que zemos at agora pode ser feito em XQuery Porm, com XQuery possvel carregar o documento XML desejado Tente isto: doc(CAMINHO_DA_PASTA_AULA/book.xml)//book[price < 30 or price > 35] Estrutura de consulta:
FROM -> doc(CAMINHO_DA_PASTA_AULA/book.xml) SELECT -> //book WHERE -> [price < 30 or price > 35]
26 / 33
Introduo e motivao
Prtica
Consultas FLWOR
Lembra um lao de repetio dentro de uma funo Exemplo: for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book where $x/price > 10 return $x/title
27 / 33
Introduo e motivao
Prtica
Estrutura de consulta
FOR -> for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book (opcional) LET -> utilizar uma varivel let $x := (1 to 5) return <test>$x</test> WHERE -> where $x/price > 10 (opcional) ORDER BY -> order by $x/title RETURN -> return $x/title
28 / 33
Introduo e motivao
Prtica
Exerccio
Escreva uma consulta FLWOR que retorne em ordem alfabtica o nome de todos os alunos (alunos.xml) que tem nota inferior a 8 em matemtica
29 / 33
Introduo e motivao
Prtica
Condies em XQuery
possvel construir expresses IF-THEN-ELSE em XQuery Ex: for $x in doc(CAMINHO_DA_PASTA_AULA/book.xml)//book return if($x/@category=CHILDREN) then <crianca>{data($x/title)}</crianca> else <adulto>{data($x/title)}</adulto>
30 / 33
Introduo e motivao
Prtica
Gerando HTML
Uma das maiores utilidades do XQuery gerar HTML dinamicamente Possibilita que uma pgina possa ser atualizada apenas alterando o contedo do documento XML (banco de dados) Basta saber um pouco de HTML e fazer consultas em XQuery
31 / 33
Introduo e motivao
Prtica
Introduo e motivao
Prtica
Exerccio
Gere uma planilha em HTML que contenha o nome de cada aluno, sua nota de matemtica e o seu nmero de faltas nesta disciplina
33 / 33