introducaoTecnXML-UNOESC-CamposNovos

Propaganda
UFSC – CTC - INE
Introdução à Tecnologia
XML
Ronaldo dos Santos Mello
e-mail: [email protected]
http://www.inf.ufsc.br/~ronaldo
http://www.grupobd.inf.ufsc.br
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
XML (eXtensible Markup Language)
 Tecnologia desenvolvida pela W3C
– W3C: World Wide Web Consortium
 definição de padrões para a Web
– HTML, XML, Web Semântica (RDF, OWL), ...
 consórcio formado pela academia e indústria
 Por quê conhecer XML é importante?
– padrão para representação e transferência de
dados entre pessoas e softwares
 formato simples e leve
 dados estão cada vez mais sendo armazenados em
documentos XML ao invés de BDs
Protocolos XML
 Definidos em diversos domínios e tecnologias
– comércio eletrônico
 CXML, eBisXML, ...
– domínios bibliográficos
 DBLP, SIGMOD, ...
– sistemas de informação geográfica
 SVG, GML, ...
– dispositivos móveis
 WML, WAP, ...
– web services
 SOAP, WSDL, ...
– ...
Uso Extensivo de Protocolos XML...
 Necessidades
– definição da estrutura dos dados XML
– métodos de acesso a dados XML
 consulta e atualização
– apresentação adequada de dados XML
 em browsers Web, interfaces de aplicações, ...
– armazenamento de dados XML
 integridade, segurança, ...
– ...
 Precisa-se de tecnologia para suprir estas
necessidades!
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
Formato XML
 XML é uma meta-linguagem de marcação
– meta-linguagem
 XML é um padrão aberto
– cada aplicação define o protocolo (linguagem) para a
representação dos seus dados
– linguagem de marcação
 semelhante à linguagem HTML
– padrão fechado para apresentação de dados em browsers Web
 utiliza tags para descrição os dados
– tag: indica a intenção do dado e delimita o seu conteúdo
Exemplo de Dado XML
<livro>
<titulo>Tecnologia XML</titulo>
tag (intenção do dado)
<autor>
<nome>João da Silva</nome> conteúdo do dado
<eMail>[email protected]</eMail>
<endereco>
<comercial>rua A, 34 – Fpolis - SC</comercial>
<residencial>rua B, 5 – Fpolis – SC</residencial>
</endereco>
</autor>
...
<capitulo nome=“Introdução”>Este capítulo apresenta ...
<secao>
<nome>Linguagens de Marcação</nome>
...
</secao>
</capitulo>
...
</livro>
estrutura hierárquica, ordenada e complexa
Sintaxe XML
 Dados XML são definidos em um documento
XML
 Um documento XML contém
– cabeçalho
– dados
 elementos simples ou complexos
 atributos de elementos
 referências a entidades
– comentários
– instruções de processamento
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1“>
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
cabeçalho
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
comentário
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
instrução de processamento
<!ENTITY xml “eXtensible Markup Language”>
...
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
elemento raiz
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
]>
elemento simples
<listaLivros>
(#PCDATA)
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
elemento complexo
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
elemento misto
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
atributo
]>
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Exemplo de Documento XML
<?xml version =“1.0” encoding ="ISO-8859-1">
<!–- documento XML sobre livros -->
<!DOCTYPE listalivros [
<!ENTITY xml “eXtensible Markup Language”>
...
declaração de
]>
entidade
<listaLivros>
<livro ISBN=“112”>
<título>Tecnologia &xml</título>
<autor>
<nome>João da Silva</nome>
referência a
<eMail>[email protected]</eMail>
uma entidade
</autor>
...
<capítulo nome=“Introdução”>A &xml foi ...
<seção>
<nome>Linguagens de Marcação</nome> ...
</seção>
</capítulo> ...
</livro> ...
</listaLivros>
Documento XML Bem Formado
 Requisitos
– contém um elemento raiz
– define elementos com tags inicial e final
– define atributos com conteúdo delimitado por
aspas simples (‘) ou aspas duplas (“)
 Parser XML
– programa que verifica se um documento XML é
bem formado
 alguns browsers Web são capazes de realizar tal
verificação
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
Tecnologia XML da W3C
 Principais recursos
– definição de esquemas
 DTD e XML Schema
– linguagens de consulta
 XPath e XQuery
– modelo de representação e interface de acesso
 DOM
– transformação e apresentação de dados
 XSL
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
Definição de Esquemas
 Esquema XML
– define restrições para a organização hierárquica e
conteúdo dos dados em um doc XML
– documento válido
 documento cuja estrutura está de acordo com um esquema
 validação é feita por um parser
 Duas recomendações
– DTD (Document Type Definition)
– XSD (XML Schema Definition)
Document Type Definition (DTD)
 Primeira recomendação da W3C
 Gramática para definição de hierarquia
– baseada em seqüências ordenadas e escolhas
– sintaxe proprietária
 Definição de elementos
– complexos, textuais (#PCDATA), vazios (EMPTY), mistos
((#PCDATA | ...)*) ou com conteúdo aberto (ANY)
 Definição de atributos
– obrigatórios (#REQUIRED) opcionais (#IMPLIED), fixos
(#FIXED), valor default, enumeração, referência (ID,
IDREF(S))
DTD - Exemplo
<!ELEMENT listaLivros (livro+)>
<!ELEMENT livro (título, preço, autor+, capítulo+)>
<!ATTLIST livro ISBN ID #REQUIRED
edicaoAnterior IDREF #IMPLIED>
<!ELEMENT título (#PCDATA)>
<!ELEMENT autor (nome, eMail?)>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT preço (#PCDATA)>
<!ELEMENT eMail (#PCDATA)>
<!ELEMENT capítulo (#PCDATA | seção)*>
<!ATTLIST capítulo nome CDATA #REQUIRED>
<!ELEMENT seção (nome, conteúdo)>
<!ELEMENT conteúdo (#PCDATA)>
XML Schema (XSD)
 Recomendação mais recente
 Sintaxe XML
 Extensão da funcionalidade de uma DTD
– definição e especialização de tipos
 semelhança com esquemas orientados a objetos
– definição de tipos de dados
 simples (string, integer, boolean, ...)
 complexos (list, union)
– facilidades adicionais para definição de restrições
 intervalos de valores permitidos, padrões de conteúdo via
expressões regulares, ...
– ...
Documento XSD - Exemplo
<?xml version=“1.0” encoding=“UTF-8”>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
... <!-– Declaração de Tipos -->
<xsd:simpleType name=“Tisbn”>
<xsd:restriction base=“xsd:string”>
<xsd:pattern value=“[0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9]”/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name=“Tlivro”>
<xsd:sequence>
<xsd:element name=“titulo” type=“xsd:string”/>
<xsd:element name=“autor” type=“Tautor”
minOccurs=“1” maxOccurs=“unbounded”/>
<xsd:element name=“preço” type=“xsd:float“/>
...
</xsd:sequence>
<xsd:attribute name=“isbn” type=“Tisbn”/>
</xsd:complexType>
...
Documento XSD – Exemplo (cont.)
...
<xsd:complexType name=“TlivroTécnico” base=“Tlivro”
derivedBy=“extension”>
<xsd:element name=”area" type=“xsd:string"
minOccurs=“1” maxOccurs=“1”/>
</complexType>
...
<!-– Declaração de Elementos -->
<xsd:element name=“listaLivros”>
<xsd:complexType>
<xsd:element name=“livro” type=“Tlivro”/>
minOccurs=“1” maxOccurs=“unbounded”/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
XPath
 Primeira recomendação para consulta a dados
 Linguagem para acessar partes de um doc XML
– sintaxe: expressões de caminho
 assemelha-se à navegação em diretórios DOS
– exemplo
 expressão XPath: /livro/título
 resultado:
<título>Tecnologia XML</título>
<título>Sistema de Banco de Dados</título>
...
XPath - Exemplos
/
(elemento raiz – todo o doc XML)
/livro/*/eMail
(‘*’ substitui 1 elem)
/livro//seção
(qq elemento descendente seção)
/livro/capítulo[1] (primeiro capítulo de livros)
/livro/capítulo/nome |
/livro/capítulo/seção/nome (união)
/livro/@ISBN
(acesso a um atributo)
/livro[título = “XML”] (filtro)
/livro[capitulo/@nome = “XML” or
//seção/nome = “XML”]/título (filtro)
/livro//seção[last()] (função)
XQuery
 Recomendação mais recente
 Recursos adicionais em relação à XPath
– junções, definição de estruturas de resultado,
variáveis de consulta, atributos calculados, funções
de agregação, ...
 Sintaxe básica (expressão “FLWR”)
for variável in expressãoXPath
[let associação de novas variáveis]
[where condição]
return estrutura de resultado
XQuery - Exemplos
for $liv in /livro
where $liv/autor/nome = “João Silva”
return { $liv/@ISBN, $liv/titulo }
(consulta
simples)
for $liv in /livro
let $pDesc := $liv/preço - $liv/preço * 0.1
where $liv/categoria = “ficcao”
return <FiccaoDesc>{$liv/titulo, $pDesc}</FiccaoDesc>
for $liv1 in /livro[@ISBN = “562”]
for $liv2 in /livro
(nova estrutura
de resultado)
where $liv2/@ISBN != $liv1/@ISBN
and $liv2/autor/nome = $liv1/autor/nome
return $liv2/titulo
(junção)
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
DOM (Document Object Model)
 Modelo de dados para XML
– estrutura hierárquica (árvore)
– métodos de acesso (API DOM)
 principais classes de objetos
– document, node, nodelist e element
 execução de consultas e atualizações de dados
 Parsers DOM
– validam um doc XML
– geram um objeto document
Objetos do Modelo DOM
document
node
listaLivros
...
livro
título
“Tecnologia XML”
ISBN
preço
livro
autor
autor
79.00
nome
“João da Silva”
mail
“[email protected]”
“[email protected]”
nodelist
nome
element
“Maria Souza”
Exemplos de Métodos da API DOM
document
Método
Resultado
documentElement
Element
getElementByTagName(String)
NodeList
createElement(String)
Element
...
element
Método
Resultado
tagName
String
getAttribute(String)
String
setAttribute(String nome, String valor)
Attr
removeAttribute(String)
getElementsByTagName
...
NodeList
nodeList
Método
Resultado
Length
int
item(int)
Node
DOM – Exemplo (JavaScript)
var doc, raiz, livro1, autores, autor2;
doc = new ActiveXObject(“Microsoft.XMLDOM”);
doc.load(“livros.xml”);
if (doc.parseError != 0) ...;
else
{ /* acessa o elemento raiz do documento XML */
raiz = doc.documentElement;
/* busca o primeiro livro (primeiro nodo filho) */
livro1 = raiz.childNodes.item(0);
/* busca a lista de autores do primeiro livro */
autores = livro1.getElementsbyTagName(“autor”);
/* busca o segundo autor */
autor2 = autores.item(1);
/* escreve o nome do autor – primeiro nodo filho */
document.write(“Nome do segundo autor: “ +
autor.childNodes.item(0).data);
}
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
XSL (XML Style sheet Language)
 Style sheet (folha de estilos)
– define regras para a apresentação de dados
 XSL
– linguagem de definição de folha de estilos para um
doc XML
 formatação de apresentação
 transformação do conteúdo do documento XML (XSLT)
– indicação de que dados serão exibidos ou descartados
– inserção de novos conteúdos
– conversão XMLHTML, XMLXML, XMLtexto puro, ...
Documento XSL
 Define uma folha de estilo
 Sintaxe XML
 Referenciado em um doc XML
<?xml version=“1.0” ?>
<?xml-stylesheet type=“text/xsl” href=“estilo.xsl” ?>
...
 Processador XSL
– programa que valida e executa as regras
definidas em um doc XSL
– alguns browsers Web processam docs XSL
Estrutura de um Doc XSL(T)
<stylesheet xmlns = "http://www.w3.org/XSL/Transform/1.0">
elemento raiz
namespace default
(DTD da W3C com instruções XSL)
</template match = “/livro/autor">
...
padrão: indica o elemento ou
</template>
...
atributo para o qual a regra se aplica
(expressão XPath)
regra de formatação
</stylesheet>
Exemplo de Transformação XSL
Entrada: doc XML
<listaLivros>
<livro tipo=“tecnico” ISBN=“01”>
Transformação: doc XSL
<stylesheet xmlns = ...>
<template match = "listaLivros">
<título>XML Companion<\título>
<html><head>
<autor>
<title>Livros Técnicos</title> </head>
<apply-templates/>
<nome>N. Bradley<\nome> ...
<\autor> ...
</html>
<\livro>
</template>
<livro tipo=“tecnico” ISBN=“02”>
<template match = “livro">
<título>Data on the Web<\título>
<autor>
<P>
<apply-templates select =
selecionar
livros
técnicos
“livro[@tipo = "tecnico"]">
<nome>S. Abiteboul<\nome>...
<sort = "título">
<\autor> ...
</apply-templates>
<\livro> ...
</listaLivros>
processar
elementos
filhos
</P>
</template>
...
ordenar
por
títrulo
Exemplo de Transformação XSL
Entrada: doc XML
Transformação: doc XSL
<listaLivros>
...
<livro tipo=“tecnico” ISBN=“01”>
<variable name =
"separador">,</variable>
<título>XML Companion<\título>
<autor>
<nome>N. Bradley<\nome> ...
<\autor> ...
<\livro>
<livro tipo=“tecnico” ISBN=“02”>
<título>Data on the Web<\título>
selecionar
o conteúdo
de título
<template match = "título">
<value-of select = ".">
<value-of select = "{$separador}">
</template>
<autor>
<nome>S. Abiteboul<\nome>...
<\autor> ...
<\livro> ...
</listaLivros>
<template match = "autor/nome">
<value-of select = "."> selecionar
o conteúdo
</template>
do nome
</stylesheet>
do autor
Exemplo de Transformação XSL
Entrada: doc XML
<listaLivros>
Saída: doc HTML
<html>
<livro tipo=“tecnico” ISBN=“01”>
<head>
<título>XML Companion<\título>
<title>
<autor>
Livros Técnicos
<nome>N. Bradley<\nome> ...
</title>
<\autor> ...
</head>
<\livro>
<livro tipo=“tecnico” ISBN=“02”>
<P>
<título>Data on the Web<\título>
<autor>
<nome>S. Abiteboul<\nome>...
XML Companion,N. Bradley
</P>
<P>
<\autor> ...
Data on the Web,S. Abiteboul
<\livro> ...
</listaLivros>
</P>
...
</html>
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
XML e BD
 Dados XML
– manipulação crescente por usuários e aplicações
 Tecnologia de BD
– necessária para a manutenção de dados
persistentes
 XML & BD
– XML é um dado não-convencional
 dado semi-estruturado
– tecnologia de BD necessita ser estendida para
tratar este tipo de dado
Dado Semi-Estruturado
 Principais características
– estrutura heterogênea
– estrutura auto-descritiva
– estrutura parcial
Estrutura heterogênea
 Cada ocorrência de dado pode ter um
esquema particular
<autor>
<nome>Ronaldo Mello</nome>
<endereco>rua B,23</endereco>
<eMail>[email protected]</eMail>
</autor>
<autor>
<nome>Patrícia Ramos</nome>
<endereco>
<rua>Beira-Mar</rua>
<numero>767</numero>
<cidade>Fpolis</cidade>
</endereco>
<fone>33313333</fone>
<fone>33313332</fone>
</autor>
Estrutura auto-descritiva
 Cada ocorrência de dado carrega o seu
esquema
<autor>
<nome>Patrícia Ramos</nome>
<endereco>
<rua>Beira-Mar</rua>
<numero>767</numero>
<cidade>Fpolis</cidade>
</endereco>
<fone>33313333</fone>
<fone>33313332</fone>
</autor>
Estrutura parcial
 Apenas parte da descrição de um dado pode
ser estruturada
<capítulo numero = 2 titulo = “Tecnologia XML”>
Este capítulo descreve ... XML<ref>(Mel03)</ref>.
XML é um padrão ...
<secao numero = 1>
<titulo>DTD</titulo>
Esta seção descreve ...
</secao>
...
</capítulo>
XML & BD
 Dados XML não são naturalmente
adequados para armazenamento em BDs
Dado de BD
Dado XML
representação homogênea
representação heterogênea
esquema independente dos
dados
representação auto-descritiva
totalmente estruturado
estrutura parcial
esquema enxuto
esquema extenso
BD XML Nativo (ou BD XML)
 Suporta um modelo de dados proprietário para
dados XML
– definição de elementos, atributos, ordem, ...
– não há mapeamento para um esquema de dados relacional
 Adequado a
– docs XML fortemente semi-estruturados
 “documentos orientados a textos”
 mapeamento para BD relacional seria complexo!
 necessidade de consultas envolvendo padrões textuais
– aplicações que lidam apenas com dados no formato XML
 Alguns SGBDRs possuem suporte nativo a XML
– exemplos: Oracle, DB2
BD XML - Características Principais






Esquemas lógicos baseados em coleções
Consultas
Atualização
Conectividade
Restrições de Integridade
Armazenamento e indexação de dados
 Alguns exemplos: SGBD XML Tamino
Coleções
 Noção lógica de um conjunto de docs XML
– a decisão por quais docs XML pertencem a uma
coleção fica em geral a cargo da aplicação
– uma coleção pode estar restrita a um ou mais
esquemas XML
 Consultas e atualizações podem ser
direcionadas a coleções
Coleções - Tamino
 1 BD – n coleções – n esquemas – n tipos de documentos
– cada tipo de documento define um elemento raiz permitido
– novo doc XML: inserido em uma coleção e válido para algum tipo doc
 Docs sem esquema mantidos em uma coleção específica
tipos de documentos
Consultas
 Suporte a pelo menos uma linguagem de
consulta para XML
– uso mais extensivo de XPath
– uso de alguns dialetos da XQuery (tendência!)
 Características desejadas para uma linguagem
de consulta para XML
– buscas textuais (por palavras-chaves, por padrões, ...)
– consultas declarativas
– resultados de consultas
 doc XML, fragmentos de docs XML ou novas estruturas
XML
Consultas
 Tamino
– consultas em XPath e XQuery estendidas
– suporta busca por padrão
 /livro[título ~= “*XML*”]/título
– geração de docs XML como resultado
 eXist
– consultas em XPath estendida
– suporta busca por padrão, por palavra-chave (em
textos) e por proximidade
 /livro[título &=‘banco XML’]/título
 /livro/capitulo[near(.,’banco XML’,50)]/@nome
Atualizações
 Capacidades de atualização são variadas
– possibilidade apenas de substituição de um doc
XML completo
– API DOM para atualização de nodos
– linguagens de atualização declarativas
 tendência1: XUpdate (consórcio XML:DB)
– XML:DB
 consórcio de empresas responsável pelo desenvolvimento
de tecnologias para BDs XML
 tendência2: XQuery com capacidades de atualização
XUpdate
 Sintaxe XML
– I / E de elementos, atributos e texto
– A do conteúdo de elementos e atributos
 Exemplo 1:
<xupdate:append select=”//autor[nome=´Maria´]/eMail” child=”last()”>
<xupdate:element name="eMail">[email protected]</xupdate:element>
</xupdate:append>
(inclusão de um novo eMail para Maria)
 Exemplo 2:
<xupdate:remove select="/listalivros/livro[1]"/>
(remoção do primeiro livro)
Atualizações - Tamino
 XQuery possui capacidades de atualização
– insert, delete, rename e replace
 Exemplos
–
update
(inserção de autor)
for $liv in input()/livro
where $liv/titulo = “XML”
do(insert (<autor><nome>João Silva</nome></autor>)
following $liv/autor[last()])
– update
(alteração de eMail de autor)
for $aut in input()/livro/autor
where $aut/nome = “Maria Souza”
do (replace $aut/eMail with
(<eMail>[email protected]</eMail>))
Conectividade – APIs
 Interfaces ODBC tradicionais
– conexão com o BD, execução de consultas e
atualizações e exploração de resultados
 APIs XQuery e DOM para Java (JQX e JDOM)
– JDBC como base
 Protocolos HTTP
– acesso via browsers Web
 Consórcio XML:DB
– proposta de uma API para BDs XML
 manipulação de BDs e coleções; execução de consultas
Xpath e XUpdate; acesso a resultados de consultas;
controle de transações
APIs - Tamino
 Interface principal de acesso são browsers Web
– um servidor Tamino deve estar sempre associado a
um Web server (domínio Internet)
– define uma API que encapsula chamadas HTTP
 criação e manipulação de BDs, coleções e docs
– acesso: http://<nome_domínio>/tamino/<nome_BD>/
[<nome_coleção>]<comando_API_HTTP>
 Outras formas de acesso
– API DOM para aplicações Java, Jscript e Active X
– API XML:DB
Tamino – Conectividade HTTP
Restrições de Integridade
 RIs a nível de esquemas XML são limitadas
–
–
–
–
ordem hierárquica e restrições de cardinalidade
tipo de dado de elementos e atributos
enumeração de valores permitidos
integridade referencial intra-documento
 Carência de um mecanismo de integridade
mais robusto
– similar a SQL em BDRs (DCL)
Integridade Semântica - Tamino
 Definição de valores possíveis (fixos, defaults, enumerações, ...)
 Integridade referencial controlada por stored procedures (para
cada caso indicado no campo trigger)
controles de
integridade
Armazenamento
 Docs XML “in-natura” (campo longo)
– texto do doc preservado na íntegra (cabeçalho, comentários, ...)
– armazenamento clusterizado de fragmentos do doc
 Esquema de objetos (DOM ou esquema similar a BDOO)
DOM
BDOO
preserva ordem de elementos
não preserva ordem de elementos
qualquer esquema tem a mesma estrutura
(document, element, ...)
– intenção dos dados não fica clara
esquema de classes gerado de acordo com os
tipos de elementos complexos
– intenção dos dados mais clara
clusterização por profundidade
– bom p/ buscas na ordem da hierarquia
clusterização por largura
– bom p/ buscas por propriedades de um
elemento
clusterização geralmente por instâncias da
mesma classe
– bom para buscas por dados de
determinados tipos de elementos
Indexação
 Indexação por valor
– indexa valores de elementos simples e atributos
 ex: buscar elementos com valor “XML”
 Indexação por estrutura
– indexa a localização de elementos e atributos
 ex: buscar elementos com nome “XML”
 Indexação full-text
– indexa tokens em textos e valores de atributos
 ex: buscar elementos que contenham a palavra “XML”
Roteiro
1. Introdução
2. Dados e Documentos XML
3. Componentes da Tecnologia XML
a)
b)
c)
d)
DTD e XML Schema
XPath e XQuery
DOM
XSL e XSLT
4. Bancos de Dados XML
5. Considerações Finais
Considerações Finais
 Uso de XML hoje é uma realidade!
– formato simples e leve
– representação e transferência de dados entre
pessoas e sistemas
– manipulação de dados XML requer soluções
para gerenciamento de dados XML
 tema de pesquisa atual na comunidade de BD
 duas frentes de pesquisa/desenvolvimento
– extensão de SGBDs relacionais
– desenvolvimento de SGBDs XML nativos
BDs XML – Crítica
 Pontos a favor
– dados XML são semi-estruturados
 overhead de gerenciamento para BDs não-XML
– aplicações com dados complexos ou com regras de negócio
pouco claras ou muito dinâmicas
 flexibilidade estrutural de docs XML modela melhor as transações e
dados (complexos) personalizados do negócio
– aplicações que lidam apenas com dados XML
 por quê adquirir um BD não-XML?
– modelo de dados diferente; recursos para o gerenciamento de dados XML
é complicado
 Tecnologia relativamente recente
– algumas funcionalidades de SGBDs não são ainda tratadas ou
não estão consolidadas
 restrições de integridade, visões, segurança, concorrência, ...
BDRs – Crítica
 SGBDs robustos
– gerenciamento “completo” e eficiente de dados
 Modelo de dados não é XML
– necessidade de um suporte de mapeamento para
importação/exportação de dados XML
 overhead de processamento
– apesar de alguns SGBDRs já possuírem recursos de
armazenamento nativo de XML
 definição de novos padrões de acesso
– como SQL/XML
– alguns SGBDRs caminham em direção a um BD
híbrido (relacional e XML)
Referências Relevantes
 Tecnologia XML
– http://www.w3c.org/xml
– http://www.w3.org/XML/Schema#Tools
– http://www.w3schools.com
 XML & BD
– http://www.rpbourret.com/xml/XMLAndDatabases.htm
 XML:DB
– http://www.xmldb.org
 SGBDRs com suporte a XML (Oracle e DB2)
– http://www.oracle.com/technology/tech/xml/xmldb
– http://www-306.ibm.com/software/data/db2/extenders/xmlext/
 SQL/XML
– http://sqlx.org
 SGBDs XML Nativos (Tamino e eXist)
– http://www.softwareag.com/tamino
– http://exist-db.org/
UFSC – CTC - INE
Introdução à Tecnologia
XML
Ronaldo dos Santos Mello
e-mail: [email protected]
http://www.inf.ufsc.br/~ronaldo
http://www.grupobd.inf.ufsc.br
Download