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 XMLHTML, XMLXML, XMLtexto 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