Uma Abordagem Alternativa para o Armazenamento Electrónico de Dados: O Papel da Norma XML Semana da Ciência e da Tecnologia 2002 FOR $l IN document( wwwestvipvpt/biblioteca/bdbiblioxml ) //livro WHERE $l/editora/nome = FCA AND $l/ano > 1995 RETURN $l/autor bdbib/livro[editora/nome= FCA AND ano>1995] /autor WHERE <bdbib> <autor>$a</autor> <editora> <nome>fca</nome> </editora> <ano>$n</ano> </bdbib> IN wwwestvipvpt/biblioteca/bdbiblioxml, $n > 1995 CONSTRUCT $a ESTG Artur Afonso de Sousa Carlos Quental Departamento de Informática ESTV IPG Descrição Geral A XML e normas associadas Armazenamento e gestão de dados XML Conclusão
Motivações HTML HyperText Markup Language Não extensível Etiquetas não descrevem o significado dos dados SGML Standard Generalized Markup Language Complexa XML extensible Markup Language (W3C - 1998) Extensível Etiquetas descrevem o significado dos dados Simples Projectada para a Web INTEROPERABILIDADE ENTRE APLICAÇÕES! Base de dados XML <?xml version= 10 encoding="iso-8859-1"?> <bdbib> <isbn>972-722-160-2</isbn> <título>oracle 8i Curso Completo</título> <autor>luís Moreno Campos</autor> <editora> <nome>fca</nome> <sede>lisboa</sede> </editora> <ano>1998</ano> <preço>49</preço> <cdrom> </cdrom> </bdbib>
XML-SCHEMA <?xml version="10" encoding="iso-8859-1"?> <xsd:schema xmlns:xsd="http://wwww3org/2001/xmlschema" elementformdefault="unqualified" attributeformdefault="unqualified"> <xsd:element name= bdbib > <xsd:complextype> <xsd:choice maxoccurs= unbounded > <xsd:element name= livro > <xsd:complextype> <xsd:sequence> <xsd:element name= isbn type= xsd:string /> <xsd:element name= título type= xsd:string /> <xsd:element name= autor type= xsd:string minoccurs = 1 maxoccurs="unbounded"/> <xsd:element name= editora > <xsd:complextype> <xsd:sequence> <xsd:element name= nome type= xsd:string /> <xsd:element name= sede type= xsd:string /> </xsd:sequence> <xsd:element name= ano type= xsd:unsignedshort /> <xsd:element name= preço type= xsd:float /> </xsd:sequence> <xsd:element name= cdrom > Acesso programático a um documento XML Documento XML Processador XML (DOM/SAX) API Linguagens de programação (Java, Perl,etc)
Linguagem de definição de folhas de estilo para a XML XML conteúdo separado da apresentação Linguagem de definição de folhas de estilo para apresentar os dados ao utilizador - XSL (extensible Stylesheet Language) <?xml-stlylesheet type= text/xsl href= identificação_da_folha_de_estiloxsl?> Documento XML + Folha de estilo XSL Documento HTML Novo documento XML Outro qualquer formato Possibilidade de associar várias folhas de estilo a um documento XML XSLT <?xml version= 10 encoding="iso-8859-1"?> <html xmlns:xsl= http://wwww3org/1999/xsl/transform > <head> <title>título do Livro Pretendido</title> </head> <body> <table border= 1 cellspacing= 0 > <tr> <th>título</th> <th>isbn</th> </tr> <xsl:for-each select= bdbib/livro > <tr> <td><xsl:value-of select= título /></td> <td><xsl:value-of select= isbn /></td> </tr> </xsl:for-each> </table> </body> </html>
HTML <html> <head> <title>título do Livro Pretendido</title> </head> <body> <table border="1" cellspacing="0"> <tr> <th>título</th> <th>isbn</th> </tr> <tr> <td>oracle 8i Curso Completo</td> <td>972-722-160-2</td> </tr> </table> </body> </html> Output
Linguagens de interrogação para a XML XML-QL Perspectiva de Bases de Dados XQL Perspectiva do Documento QUILT Perspectiva Integradora XQUERY Tentativa de providenciar uma norma W3C XQuery Proposta pelo W3C para estabelecer uma norma para uma linguagem de interrogação para documentos XML A linguagem XQuery tem sido, até agora, fortemente inspirada na linguagem Quilt Sintaxe básica: Cláusula FOR deve ser utilizada sempre que seja necessário iterar e gera uma lista ordenada de tuplos Clásula WHERE aplica condições aos tuplos gerados pela cláusula FOR Clásula RETURN gera o resultado da consulta
XQuery Exemplo 1 <resultado> FOR $l IN document( wwwestvipvpt/biblioteca/bdbiblioxml ) //livro WHERE $l/editora/nome = FCA AND $l/ano >= 1998 RETURN $l/título $l/preço SORTBY (preço DESCENDING) </resultado> FOR $l IN document( wwwestvipvpt/biblioteca/bdbiblioxml ) //livro[editora/nome = FCA AND ano >= 1998] <resultado> </resultado> Resultado da consulta anterior <título>oracle Oracle 8i Curso Completo</título> <preço>49</preço> <título> </título> <preço> </preço>
<xsd:schema xmlns:xsd= http://wwww3org/2001/xmlschema > <xsd:element name= produtos /> <xsd:complextype> <xsd:choice maxoccurs= unbounded > <xsd:element name= livro /> <xsd:sequence> <xsd:element name= isbn type= xsd:string /> <xsd:element name= título type= xsd:string /> <xsd:element name= autor type= xsd:string maxoccurs= unbounded /> <xsd:element name= editora type= xsd:integer /> <xsd:element name= ano type= xsd:integer /> <xsd:element name= preço type= xsd:float /> </xsd:sequence> <xsd:element name= cdrom /> <xsd:element name= dvd /> </xsd:choice> </xsd:schema> Esquema Mediabooks De acordo com o documento XML: wwwmediabookspt/bdbiblioxml Esquema Webboom <xsd:schema xmlns:xsd= http://wwww3org/2001/xmlschema > <xsd:element name= bdbiblio > <xsd:complextype> <xsd:choice maxoccurs= unbounded > <xsd:element name= livro /> <xsd:sequence> <xsd:element name= isbn type= xsd:string /> <xsd:element name= título type= xsd:string /> <xsd:element name= autor type= xsd:string maxoccurs= unbounded /> <xsd:element name= editora type= xsd:integer /> <xsd:element name= ano type= xsd:integer /> <xsd:element name= preço type= xsd:float /> </xsd:sequence> De acordo com o documento XML: wwwwebboompt/bdlivrosxml
XQUERY Exemplo 2 <resultado> FOR $lm IN document( wwwmediabookspt/bdbiblioxml ) //livro[título CONTAINS XML ], $lw IN document( wwwwebboompt/bdlivrosxml ) //livro WHERE $lm/título = $lw/título RETURN $lm/título, $lm/autor, $lm/editora, $lm/ano, <preçomb>$lm/preço</preçomb> <preçowb>$lw/preço</preçowb> </resultado> Resultado possível <resultado> : </resultado> <título>bases de Dados, Web e XML</título> <autor>artur Afonso de Sousa</autor> <editora>fca</editora> <ano>2002</ano> <preçomb>24,94</preçomb> <preçowb>24,50</preçowb> <título>open Source XML Database Toolkit</título> <autor>liam Quin</autor> <editora>wiley</editora> <ano>2000</ano> <preçomb>30,50</preçomb> <preçowb>30,94</preçowb>
Vantagens da XML A XML é extensível Os documentos XML são auto-descritivos Apesar da sua simplicidade, a XML permite criar estruturas bastante complexas A XML é extremamente flexível A XML permite efectuar a validação de documentos (DTD, XML-SCHEMA) O conteúdo de um documento XML pode ser facilmente manipulado pelas aplicações de software (APIs DOM e SAX) A XML tem uma natureza meta linguística A XML é um padrão aberto O conteúdo de um documento XML está separado da sua apresentação Um documento XML pode ser pesquisado de formas não previstas (questões ad hoc) Descrição Geral A XML e normas associadas Armazenamento e gestão de dados XML Conclusão
Armazenamento e gestão de dados XML Documentos XML fortemente estruturados SGBDs relacionais e objecto - relacionais (Oracle( 9i) SGBDs orientados aos objectos (POET) Documentos XML semiestruturados SGBDs semiestruturados (LORE, Natix) SGBDs nativos (excelon( excelon, Tamino) Sistema de ficheiros + APIs + LPs + LIs Sistema de ficheiros para armazenar dados XML Documento XML + processador XML (DOM / SAX) + Linguagens de programação (Java, C++, Perl, etc) + XQuery Documento XML
Descrição Geral A XML e normas associadas Armazenamento e gestão de dados XML Conclusão Conclusão Espera-se que a XML venha a tornar-se na língua franca da Internet A linguagem de definição de esquemas XML-SCHEMA é muito mais poderosa que as antigas DTDs, no que concerne à representação de tipos de dados e à especificação de restrições semânticas A XML, para além de ser um excelente meio de troca de dados entre aplicações heterogéneas, pode também ser utilizada como um modo de armazenamento de dados Acreditamos que, com uma norma para uma linguagem de interrogação como a XQuery, um ficheiro XML se torne numa autêntica base de dados Se utilizarmos a XML juntamente com as especificações XML-SCHEMA, XSL(T) e XQuery, podemos implementar um autêntico ambiente de bases de dados