• Nenhum resultado encontrado

Uma Abordagem Alternativa para o Armazenamento Electrónico de Dados: o Papel da Norma XML

N/A
N/A
Protected

Academic year: 2020

Share "Uma Abordagem Alternativa para o Armazenamento Electrónico de Dados: o Papel da Norma XML"

Copied!
24
0
0

Texto

(1)

Uma Abordagem Alternativa para o Armazenamento Electrónico de

Dados: o Papel da Norma XML

Artur Afonso de Sousa

Escola Superior de Tecnologia de Viseu, Departamento de Informática, Viseu, Portugal

ajas@di.estv.ipv.pt

Carlos Quental

Escola Superior de Tecnologia de Viseu, Departamento de Informática, Viseu, Portugal

quental@di.estv.ipv.pt

Nuno Pina

*

Escola Superior de Tecnologia de Viseu, Departamento de Informática, Viseu, Portugal

nunopinapais@netvisao.pt

Resumo

A norma XML (eXtensible Markup Language), proposta pelo W3C (World Wide Web Consortium) para a representação e permuta de dados na Internet, é uma (meta) linguagem de marcação de documentos adequada aos requisitos da WWW. Com a proliferação de documentos XML na Web, surge naturalmente a necessidade de os armazenar e interrogar eficientemente.

Neste artigo, além de se abordar as diferentes formas de armazenamento e gestão de dados XML actualmente existentes, pretende-se analisar as potencialidades da norma XML no armazenamento de dados (estruturados e semiestruturados), pois acreditamos que, com o aparecimento de uma linguagem de interrogação como a XQuery, um ficheiro XML pode ser considerado uma autêntica base de dados, dado que os dados nele contidos podem ser consultados de forma não antecipada (consultas ad hoc).

Palavras chave: XML, XML-SCHEMA, XSLT, XQUERY, WEB SERVICES. 1

Introdução

A XML (eXtensible Markup Language) está a emergir como o novo standard, proposto pelo W3C (World Wide Web Consortium), para a representação e a permuta de dados na Internet. A sua simplicidade e as suas características estão a torná-la muito atractiva quer para os programadores, quer para os utilizadores finais. A comunidade e a indústria das bases de dados já reconheceu o potencial deste novo formato e muitos dos construtores estão a expandir as suas tecnologias, com o intuito de proporem repositórios para os dados XML (são exemplos: Oracle, IBM, Microsoft, Sybase, Ardent Software, ODI, POET Software, entre outros).

À medida que vão surgindo normas para especificações de tecnologias associadas à XML e que vão aparecendo ferramentas estáveis que implementem essas especificações, a utilização da XML como um formato universal de troca de dados

(2)

entre aplicações heterogéneas (utilizando a Internet) será certamente uma realidade muito próxima. Com a proliferação de documentos XML na Web torna-se crucial efectuar eficientemente o armazenamento e a gestão deste tipo especial de dados (estruturados e/ou semiestruturados).

Existem várias abordagens para armazenar e gerir documentos XML: os SGBDs relacionais (e objecto-relacionais), os SGBDs orientados aos objectos, os SGBDs semiestruturados, os recentes SGBDs nativos e o sistema de ficheiros. Neste artigo, tenta-se abordar todas estas formas de armazenamento e gestão de dados XML, dando especial evidência à utilização directa do sistema de ficheiros para armazenar dados em ficheiros XML, juntamente com uma linguagem de interrogação específica para a XML para formular consultas ad hoc sobre esses mesmos dados.

Relativamente à estruturação do artigo: na secção 2 faz-se uma breve alusão a algumas das características da norma XML. Na secção 3 analisa-se resumidamente a norma XML-SCHEMA. No seguimento, aborda-se na secção 4 a norma XSLT. Na secção 5, analisam-se sucintamente as várias abordagens actualmente existentes para armazenar e gerir dados XML. Na secção 6 apresenta-se a aplicação Jornal Beirão. Na secção 7 são apontadas algumas direcções para trabalho futuro. Finalmente, as conclusões deste artigo estão contidas na secção 8.

2 A

norma

XML

A história da linguagem XML está intimamente ligada à evolução da World Wide Web [Bray et al. 1998a]. É por todos reconhecido que a larga aceitação de que a WWW hoje desfruta se deve, em grande parte, à “invenção” da linguagem HTML (HyperText Markup Language), no início dos anos 90, por Tim Berners-Lee. Numa primeira fase, o seu principal objectivo foi a disseminação de documentos na Internet. Todavia, face aos rápidos avanços tecnológicos e aos novos requisitos da WWW, nomeadamente das aplicações de comércio electrónico, a HTML apresenta, actualmente, algumas limitações importantes, das quais se destacam:

A HTML não é extensível. Disponibiliza apenas um conjunto de etiquetas (marcas) predefinidas, não permitindo, assim, contemplar requisitos mais específicos, com necessidade de recorrer a novas etiquetas.

As etiquetas da HTML, apesar de fornecerem indicações sobre a posição e a apresentação dos dados, não disponibilizam qualquer informação sobre o seu significado.

Por outro lado, a SGML (Standard Generalized Markup Language), criada em meados dos anos 80, é uma metalinguagem (na qual a HTML foi baseada) utilizada para definir regras que especifiquem a estrutura e o conteúdo de diferentes tipos de documentos electrónicos. Apesar de a SGML ser extremamente versátil, é, contudo, muito complexa (só a sua especificação compreende cerca de 500 páginas).

(3)

Figura 1 - Motivações que conduziram à invenção da XML.

Uma vez que a SGML é demasiado complexa e que a HTML apresenta sérias limitações, a solução encontrada pelo W3C foi a criação de um novo standard em 1998 – a XML – que é um subconjunto da SGML, ou seja, é uma versão simplificada da SGML, especialmente projectada para os requisitos da WWW (ver figura 1).

A XML é uma (meta) linguagem de marcação de documentos, completamente independente das plataformas hardware e software que a utilizam. É, portanto, um padrão aberto, que fornece um conjunto de regras para descrever o conteúdo dos documentos, assim como a sua estrutura lógica, de modo a que estes possam ser interpretados e/ou manipulados, quer pelos utilizadores, quer pelas aplicações [Afonso de Sousa et al. 2000].

A seguir apresenta-se o documento XML que vai ser utilizado nos exemplos ilustrados ao longo deste artigo:

HTML HyperText Markup Language

SGML

Standard Generalized Markup Language

• Não extensível

• Etiquetas não descrevem o significado dos dados

XML eXtensible Markup Language (W3C - 1998)

INTEROPERABILIDADE ENTRE APLICAÇÕES !

• Complexa

• Extensível

• Etiquetas descrevem o significado dos dados • Simples

• Projectada para a Web

(4)

<?xmlversion="1.0"standalone="yes"?>

<EdicaoFichxmlns="http://tempuri.org/EdicaoFich.xsd"> <Artigo>

<id_artigo>0</id_artigo>

<titulo>Nova funcionalidade</titulo>

<texto>Venho por este meio avisar que se encontra disponível uma nova funcionalidade no programa de todos nós - EdiGest - que passa por escrever noticias, edições inteiras para …

</texto>

<jornalista>Nuno Pina Pais</jornalista> <tipo_artigo>9</tipo_artigo> </Artigo> <Imagem> <id_imagem>0</id_imagem> <altura>221</altura> <largura>171</largura> <bits>fzABP51V07VSdQ2eWwWWRSQHwRkYPOK7P8A4SiC4vGZdPlgRYESOOG6Kh T8y7j8vJ4ByevfOap2E2chby6SkwLF2IPEZlYAHscEE+9TXLWLzh4rt7ViMMGWc 4zgkHHTOKfrfiee5iu7Uxt 5HnDarybiuHGMEjr2zVO31gR6lLK1nDIfLUYlVXA55 CDSsh30LU101x5aT+ImkCghA8QYD pwPn4GMflTSID8sush1IwVWJVJHcA7j/ te91K2gt7ORNKsiZ4jI263iOOnHCD1rKvtdie1 ubcaVYr5iModYIwVOOCCFBBz6 5LdPpJijUSvCY+FYSgYGMY5HpVdZdIzgymYnn5nZifbAOPXtUNtrhiv7ab7OrFI 6ehBH6V2KeKpm+yQQRNbkwl5HjkxvOT2AGB0HFFgbsYlqS+VsdKu3BH/LtZ wHNSRSpcWhkQ8MCCCCCCDgg+hq7e+KLuGAOWnck95z6Z9K5m11ry7 AA 25Zny7MX6knntQ1oNO59O/DwY0+9b1mX9I1Fdl2rxPwp8Sv7N06ZP7I8zdID n7Tj+Ef7Jrf/AOFuf9QP/wAm/wD7ChbAj02ivM/+Fuf9QP8A8m//ALCuq8J+J/8 AhKLOef7H9m8p9m3zN+ePXApjOiooooA//9k= </bits> <id_artigo>0</id_artigo> </Imagem> <Edicao>

<responsavel>teste</responsavel> <data>2002-6-9</data>

</Edicao> </EdicaoFich>

Figura 2 - Exemplo de um documento XML.

As ideias base subjacentes à XML são muito simples: as etiquetas, para além de fornecerem indicações sobre a estrutura lógica do documento, identificam também o conteúdo dos dados, em vez de, por exemplo, especificarem apenas o modo como estes devem ser apresentados. O conteúdo é, portanto, separado da apresentação, tornando fácil a obtenção de múltiplas perspectivas sobre os mesmos dados. Os relacionamentos entre os dados são estabelecidos através de simples referências ou por aninhamento de etiquetas.

Como se pode verificar, os dados num documento XML estão agrupados em elementos delimitados por etiquetas de marcação, podendo estes, por sua vez, estar aninhados dentro de outros elementos. O fragmento de dados que surge entre estas etiquetas representa o conteúdo do elemento. Cada elemento tem um tipo, identificado pelo nome da etiqueta que lhe está associada, algumas vezes também chamado o seu “identificador genérico”, e pode ter associada uma especificação de um conjunto de atributos. Cada especificação de um atributo tem um nome e um valor. Por exemplo, na figura 2, as linhas 3 a 12 referem-se a um elemento <Artigo> que contém cinco (sub) elementos <id_artigo> , <titulo>, <texto>, <jornalista> e <tipo_artigo>.

(5)

Assim, os principais blocos de construção de estruturas hierárquicas, nos documentos XML, são os elementos. Estes podem conter texto, outros elementos, ou ambos, ou ainda, estarem simplesmente vazios. Além disso, também podem ter atributos associados, para adicionar (meta) informação. As especificações dos atributos só podem aparecer dentro das etiquetas de início de marcação e das etiquetas de elementos vazios. Dado que um ficheiro XML é simplesmente um ficheiro de texto, a única maneira de armazenar ficheiros binários é transforma-los para texto, como se pode observar na figura 2. Neste caso, o elemento <bits> representa uma imagem que foi anexada ao ficheiro XML através de uma conversão para Base64 (sistema vulgarmente utilizado nos attachments dos emails). Note-se que o documento XML da figura 2 contém 3 elementos (Artigo, Imagem e Edicao) e que o elemento Imagem contém um subelemento id_artigo que define uma “ligação” para o elemento artigo, equivalente ao mecanismo de chave forasteira do modelo relacional (ver também a figura 3).

3 A norma XML-SCHEMA

Apesar de os benefícios que apresentam, as declarações de tipos do documento são, de certa forma, limitadas. Do ponto de vista da gestão de dados, uma insuficiência clara das declarações de tipos do documento é o facto de não fornecerem informação de tipo para os dados. Essencialmente, numa declaração de tipos do documento, tudo é do tipo PCDATA ou CDATA (cadeia de caracteres). Assim, quando se constrói uma declaração de tipos do documento a partir de um esquema de uma base de dados, pode-se eventualmente perder informação sobre os tipos dos dados. Todavia, podem ser utilizados artifícios com a inclusão de metainformação (normalmente através de atributos) que, depois, as aplicações terão de ser capazes de interpretar. A troca de dados entre bases de dados heterogéneas fica, deste modo, mais complicada. Por outro lado, as declarações de tipos de documentos não são definidas através da sintaxe XML. Outros inconvenientes são, por exemplo:

A incapacidade de restringir o tipo dos objectos referenciados pelos atributos do tipo IDREF(S). Por exemplo, poder especificar que o valor de um atributo “X”, do tipo IDREF, deve ser um identificador de um elemento do tipo “Y” e não de outro qualquer tipo;

A impossibilidade de especificação de intervalos de valores admissíveis. Por exemplo, capacidade de restringir os valores de um elemento “ano” de publicação entre 2000 e a actualidade.

Para eliminar estes inconvenientes, entre outros, e para facilitar a integração com as bases de dados, têm sido apresentadas várias propostas de linguagens de esquema para a XML, nomeadamente: DCD (Document Content Description) [Bray et al. 1998b], XML-DATA [Layman et al. 1998], XML-SCHEMA1, SOX (Schema for Object-Oriented XML) [Davidson et al. 1999], DDML (Document Description Markup Language) [Bourret et al. 1999], DSD (Document Structure Definition) [Klarlund et al. 1999].

A linguagem XML-SCHEMA é a substituta oficial do W3C para as declarações de tipos do documento. O seu objectivo é restringir e documentar o significado, a utilização e os relacionamentos das partes constituintes de um documento XML [Malhotra e

1 Em [Fallside 2001] está disponível um tutorial sobre a linguagem XML-SCHEMA. Em

http://www.w3.org/XML/Schema encontra-se uma extensa lista de processadores para a linguagem XML-SCHEMA

(6)

Maloney 1999]. A proposta está definida em duas especificações: uma para as estruturas [Thompson et al. 2001] e outra para os tipos de dados [Biron e Malhotra 2001].

Uma das principais funcionalidades disponibilizadas pela linguagem XML-SCHEMA é um sistema de tipificação de dados muito melhorado. Nesse sentido, poder-se-á, eventualmente, afirmar que, enquanto as declarações de tipos do documento estão mais orientadas para os documentos, os esquemas especificados no formato XML-SCHEMA estão mais voltados para os dados, tornando assim a XML mais apta para as aplicações de tratamento de dados. Além disso, os esquemas definidos através da linguagem XML--SCHEMA também suportam a recomendação (do W3C) dos espaços de nomes para a XML (XML Namespaces). Provavelmente, uma das diferenças mais significativas entre um esquema especificado na linguagem XML-SCHEMA e uma declaração de tipos do documento é que o primeiro é representado utilizando a sintaxe da especificação XML 1.0.

Como se pode observar na figura 3, um esquema especificado na linguagem XML-SCHEMA é ele próprio um documento XML, e o seu elemento raiz denomina-se schema. Na etiqueta de início de marcação deste elemento declara-se o espaço de nomes da recomendação para a linguagem XML-SCHEMA e, eventualmente outros espaços de nomes a utilizar.

Muito sucintamente, no esquema da figura 3 estão declarados os elementos Artigo, Imagem e Edição. Note-se que é utilizado um elemento especial choice com um atributo maxOccurs igual a unbounded para especificar que o elemento EdicaoFich pode conter várias ocorrências dos elementos Artigo, Imagem e Edição, sem qualquer ordem específica. Note-se ainda que são utilizados os elementos especiais Key e Keyref para estabelecer um mecanismo equivalente aos conceitos de chave primária e de chave forasteira do modelo relacional. Em [Duckett et al. 2001] são apresentadas algumas das características da linguagem XML-SCHEMA.

(7)

<?xmlversion="1.0"encoding="iso-8859-15"?>

<xs:schemaid="EdicaoFich"targetNamespace="http://tempuri.org/EdicaoFich.xsd" elementFormDefault="qualified"attributeFormDefault="qualified"

xmlns="http://tempuri.org/EdicaoFich.xsd" xmlns:mstns="http://tempuri.org/EdicaoFich.xsd"

xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:msdata="urn:schemas- microsoft-com:xml-msdata">

<xs:elementname="EdicaoFich"msdata:IsDataSet="true" msdata:CaseSensitive="false">

<xs:complexType>

<xs:choicemaxOccurs="unbounded"> <xs:elementname="Artigo"> <xs:complexType>

<xs:sequence>

<xs:elementname="id_artigo"type="xs:integer"minOccurs="0" msdata:AutoIncrement="true"msdata:AutoIncrementSeed="0"

msdata:AutoIncrementStep="1"/>

<xs:elementname="titulo"type="xs:string"minOccurs="0"/> <xs:elementname="texto"type="xs:string"minOccurs="0"/> <xs:elementname="jornalista"type="xs:string"minOccurs="0"/> <xs:elementname="tipo_artigo"type="xs:integer"minOccurs="0"/> </xs:sequence>

</xs:complexType> </xs:element>

<xs:elementname="Imagem"> <xs:complexType>

<xs:sequence>

<xs:elementname="id_imagem"type="xs:integer"minOccurs="0" msdata:AutoIncrement="true"msdata:AutoIncrementSeed="0" msdata:AutoIncrementStep="1"/>

<xs:elementname="altura"type="xs:integer"minOccurs="0"/> <xs:elementname="largura"type="xs:integer"minOccurs="0"/> <xs:elementname="bits"type="xs:string"minOccurs="0"/> <xs:elementname="id_artigo"type="xs:integer"minOccurs="0"/>

</xs:sequence> </xs:complexType> </xs:element>

<xs:elementname="Edicao"> <xs:complexType>

<xs:sequence>

<xs:elementname="responsavel"type="xs:string"minOccurs="0"/> <xs:elementname="data"type="xs:string"minOccurs="0"/> </xs:sequence>

</xs:complexType> </xs:element> </xs:choice> </xs:complexType>

<xs:keyname="EdicaoFichKey1"msdata:PrimaryKey="true"> <xs:selectorxpath=".//mstns:Artigo"/>

<xs:fieldxpath="mstns:id_artigo"/> </xs:key>

<xs:keyname="EdicaoFichKey2"msdata:PrimaryKey="true"> <xs:selectorxpath=".//mstns:Imagem"/>

<xs:fieldxpath="mstns:id_imagem"/> </xs:key>

<xs:keyrefname="ImagemArtigo"refer="EdicaoFichKey1" msdata:DeleteRule="Cascade"msdata:ConstraintOnly="true"> <xs:selectorxpath=".//mstns:Imagem"/>

<xs:fieldxpath="mstns:id_artigo"/> </xs:keyref>

</xs:element> </xs:schema>

(8)

4 A norma XSLT

Uma vez que nos documentos XML as etiquetas de marcação não especificam o modo de apresentação do documento (isto é, o conteúdo está separado da sua apresentação), torna-se necessário recorrer a uma outra linguagem, a XSL (eXtensible Stylesheet Language) [Adler et al. 2001], para apresentar os dados ao utilizador final. A XSL baseia-se no trabalho antecedente nas Cascading Style Sheets – CSS [Bos et al. 1998] e na Document Style Semantics and Specification Language – DSSSL2. A XSL é uma linguagem para especificação de folhas de estilo e é constituída por duas partes:

ƒ Uma linguagem para transformar documentos XML (XSLT); ƒ Um vocabulário para especificar a sua formatação.

Portanto, a linguagem XSL, na sua essência, é formada por um conjunto de duas linguagens independentes; uma linguagem de transformação (XSLT) e uma linguagem de formatação. Existem fundamentalmente dois subprocessos na fase de apresentação de um documento XML: a transformação da árvore (construir uma árvore resultado, a partir da árvore do documento XML original); e a formatação (interpretar a árvore resultado e produzir uma apresentação formatada). A XSL é uma recomendação do W3C desde Outubro de 2001. A XSLT [Clark 1999], é uma linguagem para transformar documentos XML noutros documentos XML com uma estrutura diferente. Utiliza a linguagem XPath (XML Path Language), um standard, desenvolvido pelo W3C, para a navegação de documentos XML.

Basicamente, uma folha de estilo XSL(T) é constituída por conjuntos de regras para transformar uma árvore original numa árvore resultado. Cada regra contém duas partes: um padrão, que é associado aos nós correspondentes da árvore original; e uma acção, que é instanciada, para conceber parte da árvore resultado, quando é encontrado o padrão que lhe está subjacente. Assim, quando um processador XSL transforma um documento XML, começa por atravessar a árvore original. No entanto, à medida que vai atravessando a árvore, vai também comparando os seus caminhos com os padrões de cada regra da folha de estilo. Quando o processador encontra um caminho que coincide com um padrão de uma determinada regra, instancia a acção correspondente. Esta acção inclui, normalmente, algumas etiquetas de marcação, alguns dados novos e alguns dados copiados da árvore original. As folhas de estilo XSL são associadas aos documentos XML através da inclusão de uma, ou mais, instruções de processamento no prolog (início) do documento XML. Contudo, o documento XML da figura 4 não contém a linha <?xml-stylesheet type="text/xsl" href="EdicaoFich.xslt"?>, porque a transformação é feita pela aplicação, recorrendo a objectos e métodos proprietários da Microsoft.

O documento XML ilustrado na figura 4 representa o resultado da execução da consulta incluída no template da figura 12.

(9)

Figura 4 – Documento XML que contém dados sobre edições, artigos e respectivas imagens.

A folha de estilo da figura 5, quando aplicada ao documento XML da figura 4, resultante da execução do template da figura 12, origina a página HTML da figura 6. Relativamente à folha de estilo que se segue existem algumas particularidades que vale a pena destacar. Assim, nas linhas 18 e 49 utiliza-se a função concat para juntar a identificação do artigo com a ligação para a página notícia.aspx; na linha 20 até à linha 45 utiliza-se um elemento if para dispor as imagens à esquerda ou à direita, conforme o identificador do artigo seja par ou impar, respectivamente; e na linha 53 utiliza-se novamente a função concat juntamente com a função substring com o objectivo de mostrar apenas os primeiros 500 caracteres do texto do artigo em causa.

<?xml version="1.0" encoding="UTF-8" ?>

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<a id_artigo="84" titulo="Nova funcionalidade" texto="Venho por este meio avisar que se

encontra disponível uma nova funcionalidade no programa de todos nós - EdiGest - que passa por escrever noticias / ediçoes inteiras." jornalista="Nuno Pina Pais" id_edicao="26"

id_tipoA="9">

<e id_edicao="26" data_hora="2002-06-17T00:00:00" responsavel="teste">

<i id_imagem="77" largura="150" altura="175" link=".\imagens\77.jpg" id_artigo="84">

<tid_tipoA="9" descricao="Media" />

</i>

</e> </a>

<a id_artigo="83" titulo="Edigest Release CAndidate 3.4" texto="Tenho a honra de informar que o melhor software de introdução de conteúdos no JornalBeirão está "quase nos finalmentes" hehe. Apresento assim a Release Candidate 3.4 que espero que seja a última distribuição antes da distribuição final." jornalista="Nuno Pina Pais" id_edicao="26"

id_tipoA="8">

<e id_edicao="26" data_hora="2002-06-17T00:00:00" responsavel="teste">

<i id_imagem="76" largura="243" altura="182" link=".\imagens\76.jpg" id_artigo="83"> <tid_tipoA="8" descricao="Net" />

</i> </e> </a> </root>

(10)

Figura 5 – Folha de estilo EdicaoFich.xslt.

<?xmlversion="1.0"encoding="iso-8859-15"?>

<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:outputomit-xml-declaration="yes"method="html"/>

<xsl:templatematch="/"> <html>

<bodybgcolor="#ffffff"align="left">

<br></br>

<xsl:apply-templates/>

</body>

</html> </xsl:template>

<xsl:templatematch="a">

<tableclass="borders" border="0"width="100%"cellpadding="0"cellspacing="0" align="justify"Style="FONT-SIZE: 10pt;font-family:'Verdana'">

<trclass="blackText"Style="FONT-SIZE: 10pt;font-family:'Verdana'">

<a>

<xsl:attributename="href">

<xsl:value-ofselect="concat('Noticia.aspx?id_artigo=',@id_artigo)"/>

</xsl:attribute>

<xsl:iftest="@id_artigo mod 2=0">

<imgalign="left"Valign="top"border="0"> <xsl:attributename="src">

<xsl:value-ofselect="e/i/@link"/>

</xsl:attribute>

<xsl:attributename="with">

<xsl:value-ofselect="e/i/@largura"/>

</xsl:attribute>

<xsl:attributename="height">

<xsl:value-ofselect="e/i/@altura"/>

</xsl:attribute>

</img>

</xsl:if>

<xsl:iftest="@id_artigo mod 2=1">

<imgalign="right"Valign="top"border="0"> <xsl:attributename="src">

<xsl:value-ofselect="e/i/@link"/>

</xsl:attribute>

<xsl:attributename="with">

<xsl:value-ofselect="e/i/@largura"/>

</xsl:attribute>

<xsl:attributename="height">

<xsl:value-ofselect="e/i/@altura"/>

</xsl:attribute>

</img> </xsl:if>

</a>

<a>

<xsl:attributename="href">

<xsl:value-ofselect="concat('Noticia.aspx?id_artigo=',@id_artigo)"/> </xsl:attribute>

<b><xsl:value-ofselect="@titulo"/></b>

</a><p/>

<xsl:value-ofselect="concat(substring(@texto,0,500),'...')"/>

<a>

<xsl:attributename="href">

<xsl:value-ofselect="concat('Noticia.aspx?id_artigo=',@id_artigo)"/>

</xsl:attribute>

<imgborder="0"src="./images/setamais.gif"></img>

</a>

</tr>

<trclass="blacktext">

<tdwidth="100%"align="top">

<ahref="mailto:zebreu@zebreu.pt"><xsl:value-ofselect="@jornalista"/></a>

<HRwidth="100%"SIZE="1"></HR> </td>

</tr>

(11)

Note-se que uma folha de estilo XSL(T) é ela própria um documento XML (começa com a declaração <?xml version=”1.0”?>) e que se constrói a página HTML através da inclusão de marcas HTML na parte das acções das várias regras da folha de estilo XSL(T).

Figura 6 - Página HTML resultante da aplicação da folha de estilo da figura 5 ao documento XML da figura 4.

A página HTML da figura 6 produz o output da figura 7.

<HTML xmlns:o> <HEAD>

<title>Jornal de Viseu</title>

<meta content="True" name="vs_showGrid">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> </HEAD>

<body (...)

<table class="borders" border="0" width="100%" cellpadding="0" cellspacing="0" align="justify" Style="FONT-SIZE: 10pt;font-family:'Verdana'">

<tr class="blackText" Style="FONT-SIZE: 10pt;font-family:'Verdana'"> <a href="Noticia.aspx?id_artigo=84">

<img align="left" Valign="top" border="0" src=".\imagens\77.jpg" with="150" height="175"> </a> <a href="Noticia.aspx?id_artigo=84"> <b>Nova funcionalidade</b> </a> <p>

</p>Venho por este modo avisar que se encontra disponivel uma nova funcionalidade no programa de todos nós - EdiGest - que passa por escrever noticias / edições <a href="Noticia.aspx?id_artigo=84"><img border="0"

src="./images/setamais.gif"></a></tr> <tr class="blacktext">

<td width="100%" align="top">

<a href="mailto:zebreu@zebreu.pt">Nuno Pina Pais</a> <HR width="100%" SIZE="1"> </td> </tr> </table>(...) </body> </html>

(12)

Figura 7 - Apresentação da página HTML da figura 6.

É oportuno verificar o importante papel que a linguagem XSL pode desempenhar como uma linguagem de definição de vistas sobre documentos XML. Através da associação de diferentes folhas de estilo XSL a um documento XML, é possível obter diferentes formas de visualização desse documento.

Uma das vantagens da XSL é que, para além de possibilitar a criação de diferentes formatos de apresentação para o mesmo documento XML, pode também ser utilizada como uma linguagem de transformação de documentos XML. Isto é, através da XSL(T), é possível transformar um documento XML num outro completamente diferente. Esta característica revela-se de extrema importância para alterar a estrutura de um determinado documento XML, de modo a que fique com uma estrutura compatível com o esquema de uma base de dados, para poder ser eficientemente armazenado. Por outro lado, a XSL possui várias características de programação, que permitem manipular o conteúdo de documentos XML.

Note-se ainda que, nos casos em que se pretender apresentar o conteúdo de um documento XML no formato HTML também podem ser utilizadas as CSS (Cascading Style Sheets). No entanto, a linguagem CSS é menos poderosa do que a linguagem XSL, embora tenha a vantagem de ser mais fácil de implementar. As folhas de estilo CSS também são associadas aos documentos XML através da inclusão de instruções de processamento no início do documento XML.

5 Armazenamento e gestão de dados XML

Na comunidade das bases de dados existem diferentes opiniões sobre os méritos de cada modelo de dados para tratar os dados XML. Alguns reclamam que o modelo relacional

(13)

(e objecto-relacional) é ainda a melhor opção, devido à sua maturidade e larga utilização nas organizações. Outros argumentam contra o modelo relacional, por causa do seu limitado poder semântico, preferindo o modelo orientado aos abjectos. Finalmente, existe um número crescente de adeptos dos recentes modelos de dados semiestruturados e dos sistemas nativos para o armazenamento e gestão de dados XML [Afonso de Sousa 2002]. Neste artigo pretendemos realçar uma outra abordagem: a utilização directa do sistema de ficheiros para armazenar dados no formato XML (isto é, sob a forma de ficheiros XML), para depois poderem ser eficientemente consultados através da formulação de consultas ad hoc numa linguagem de interrogação especificamente criada para a XML.

Se considerarmos que a XML está a emergir como o standard para a troca de dados electrónicos na World Wide Web e que actualmente uma grande parte dos dados electrónicos está armazenada em SGBDs relacionais ou objecto-relacionais, é facilmente compreensível que os construtores destes sistemas ofereçam capacidades para armazenar, gerir e gerar eficientemente dados XML [Afonso de Sousa et al. 2002 a]. Efectivamente, apesar de poder ser considerada uma abordagem conservadora, grande parte dos SGBDs relacionais e objecto-relacionais presentemente existentes no mercado possibilitam o armazenamento e a gestão de dados XML. Os dados do documento XML podem ser armazenados na base de dados e depois podem ser eficazmente consultados através da SQL (Structured Query Language). Por outro lado, os resultados das consultas podem ser obtidos no formato XML. Uma base de dados relacional pode ser modelada como uma estrutura hierárquica de profundidade quatro: a base de dados é representada por um elemento que contém as várias tabelas da base de dados. Por sua vez, cada tabela é representada por um elemento que contém os vários registos da tabela. Cada registo é mapeado num elemento que contém os vários campos associados. Finalmente, cada campo é representado por um elemento que contém o valor armazenado na base de dados, e, opcionalmente, um conjunto de atributos que fornecem (meta) informação adicional, como por exemplo, o tipo de dados, o tamanho máximo do campo, se é um valor nulo, etc.

Devido à natureza da informação na Web e à flexibilidade inerente da XML, espera-se que muitos dos dados representados em XML venham a exibir as características clássicas dos dados semiestruturados [McHugh e Widom 1999b]. Assim, alguns investigadores defendem que os resultados da pesquisa na área dos modelos de dados semiestruturados podem – e devem – ser aplicados na gestão dos dados XML. O SGBD LORE começou por ser implementado para armazenar e gerir dados semiestruturados no formato OEM [McHugh et al. 1997]. Todavia, foi migrado, a fim de permitir também o armazenamento e a gestão de dados no formato XML [Goldman et al. 1999, Goldman et al. 2000]. Possui uma linguagem de interrogação declarativa – a Lorel – bastante poderosa. Permite a criação e manutenção de índices e de um esquema (dataguide), que é actualizado dinamicamente, por forma a reflectir correctamente o estado actual da base de dados.

Uma vez que o standard ODMG 3.0 já atingiu algum nível de maturidade [Cattell e Barry 2000], podemos considerar que os sistemas de gestão de bases de dados orientados aos objectos são actualmente alternativas válidas para armazenar e gerir documentos XML [Chaudhri e Zicari 2000]. Os adeptos desta abordagem defendem que o modelo orientado aos objectos é o que mais se adapta à XML (são ambos centrados nos objectos), referindo, várias vezes até, que a adopção universal da XML poderá, num futuro próximo, vir a mudar o panorama actual do mercado dos sistemas de gestão de bases de dados. Os dados do documento XML podem ser armazenados na base de dados

(14)

e depois podem ser eficazmente consultados através da OQL (Object Query Language). Por outro lado, os resultados das consultas podem também ser obtidos no formato XML. Em [Afonso de Sousa et al. 2002 d], sugere-se um conjunto de regras de mapeamento de um esquema (ODL) de uma base de dados OO para um esquema no formato XML-SCHEMA que, do ponto de vista conceptual, parece ser particularmente adequado. Ainda no que concerne ao armazenamento e gestão de dados XML, existem alternativamente os SGBDs nativos. São exemplos, o eXcelon3, o Tamino4, o Natix [Kanne e Moerkotte 2000], entre outros. A grande vantagem deste tipo de sistemas reside no facto de não ser necessário efectuar mapeamentos, pois os dados são nativamente armazenados no formato XML, e de disponibilizarem muitas das características associadas aos sistemas de gestão de bases de dados. Contudo, deve-se ter em consideração o pouco tempo de vida destes sistemas.

Uma abordagem simples e alternativa para armazenar documentos XML consiste em utilizar directamente o sistema de ficheiros [Afonso de Sousa et al. 2002 b]. De um modo simplista, e de um ponto de vista especificamente voltado para a representação de dados, em oposição à perspectiva sobre o documento, podemos considerar um documento XML como uma base de dados e a gramática subjacente (quer seja expressa na forma de uma DTD, quer no formato XML-SCHEMA) como o esquema da base de dados. Assim, utilizando um processador XML (que implemente a API DOM, por exemplo) para aceder à estrutura do documento e recorrendo a uma linguagem de programação (a java, ou a C#, por exemplo) para manipular/interrogar o conteúdo dos documentos, podemos implementar bases de dados rudimentares. Contudo, isto limita, naturalmente, o género de consultas que possam ser formuladas à base de dados. Essas interrogações restringem-se às possibilidades que forem oferecidas quer pelo processador XML, quer pela linguagem de programação utilizados. Em [Holzner 1999] o leitor pode observar a implementação de vários exemplos que seguem esta metodologia.

Note-se, porém, que o aparecimento de um standard para uma linguagem de interrogação de dados XML, como a XQuery, irá certamente servir de catalisador para a utilização desta abordagem [Afonso de Sousa et al. 2002 c]. Por exemplo, as novas aplicações, em vez de recorrerem aos ficheiros estruturados (criados por uma qualquer linguagem de programação) para armazenarem os seus dados, podem utilizar ficheiros XML como suporte de armazenamento. Adicionalmente, devem permitir a formulação de consultas ad hoc (através da linguagem XQuery, por exemplo) sobre esses mesmos dados. Uma vez que a XML é uma norma universal, as aplicações que tenham os seus dados codificados neste formato estão, desde logo, aptas a trocar esses mesmos dados com outras aplicações que também “entendam” XML5.

No seguimento desta abordagem, e numa tentativa de substituir as soluções baseadas em SGBDs proprietários para armazenar e gerir dados XML, foi recentemente proposto o sistema PDOM (Persistent DOM). Este sistema visa essencialmente incutir características de persistência nos modelos de objectos criados pela API DOM do W3C. Existem já ferramentas que implementam o sistema PDOM e que possuem um motor de processamento de interrogações para a XML. Em http://xml.darmstadt.gmd.de/xql/ é possível fazer o download de uma ferramenta, a GMD-IPSI XQL, que implementa esta

3 Ver http://www.exceloncorp.com. 4 Ver http://www.softwareag.com/tamino/.

5 Não esquecer a vantagem proporcionada pela existência de um esquema comum para facilitar a troca de

(15)

abordagem. Esta ferramenta foi desenvolvida em java e tem dois componentes principais: uma implementação do sistema PDOM e um motor de interrogações XQL [Robie 1999]. Os documentos XML são processados através da API DOM e são armazenados em ficheiros binários no formato PDOM. Depois, podem ser fácil e eficientemente consultados através da linguagem de interrogação XQL. Além disso, os ficheiros PDOM podem também ser manipulados através da interface DOM. Note-se que, com esta ferramenta, é também possível criar programaticamente ficheiros PDOM, através da utilização dos métodos que a API DOM disponibiliza. A grande vantagem desta solução, relativamente à utilização de SGBDs convencionais, é que se torna possível armazenar e consultar eficientemente documentos XML arbitrariamente estruturados, isto é, sem gramáticas (DTD ou esquemas especificados no formato XML-SCHEMA) associadas, para além de não ser necessário efectuar mapeamentos, eventualmente complexos, da estrutura dos documentos XML a armazenar. Perde-se, contudo, grande parte das características associadas aos SGBDs, tais como controlo da concorrência, recuperação a falhas, entre outras.

6 A aplicação Jornal Beirão

A solução aqui apresentada terá como principal objectivo a inserção de conteúdos num jornal on-line e, posteriormente, a disponibilização para terceiros (futuros clientes) ou para uma página da Internet (ponto 3 da figura 8). A aplicação é constituída por três módulos que trabalham em conjunto para um fim comum. Na figura 8 ilustra-se a arquitectura da aplicação Jornal Beirão. A camada intermédia da aplicação é constituída pelo servidor de páginas Web (Internet Information Services – IIS). Adicionalmente, a plataforma .NET é utilizada quer pelo módulo EdiGest, quer na camada intermédia.

(16)

O módulo 1 consiste essencialmente numa aplicação para o sistema operativo Windows, que se destina aos utilizadores que não possuam uma ligação permanente à Internet, cujo modo de funcionamento é o seguinte:

• O utilizador cria uma edição que pode conter vários artigos que, por sua vez, podem conter várias imagens (ver figura 10).

• Depois de escritos os conteúdos e escolhidas as imagens, a aplicação gera um ficheiro XML com o conteúdo da Edição (texto + imagens).

• Adicionalmente, este módulo formata as imagens para que não apresentem um tamanho excessivo, pois iria dificultar o download das páginas Web.

• A aplicação para o Windows converte as imagens para texto (Base64), tal como num attach de e-mail.

Figura 9 – Esquema de ficheiros do módulo EdiGest.

O módulo EdiGest utiliza um conjunto de ficheiros XML cujo esquema é ilustrado na figura 9. No ficheiro Master.xml são guardados todos os dados relativos às configurações da aplicação e aos elementos relativos a todas as edições. Cada elemento contém um caminho absoluto para uma edição, funcionando como um índice. Deste modo consegue-se aumentar a performance das consultas.

(17)

Figura 10 – Formulário de criação de edições.

No formulário apresentado na figura 10, o utilizador pode compor uma edição inteira para o jornal. A edição pode ser constituída por vários artigos que, por sua vez, podem conter várias imagens. O utilizador tem também a possibilidade de escrever uma edição inteira para um determinado dia, isto é, escrever hoje, por exemplo, a edição de amanhã. Note-se que o resultado da operação guardar (edição) é um ficheiro XML semelhante ao ilustrado na figura 2. Posteriormente, o conteúdo desse ficheiro XML pode ser visualizado e, circunstancialmente manipulado, através do formulário da figura 10. O módulo 2 consiste num XML Web Service, que é o ponto fulcral de toda a solução, e cujas principais funcionalidades são:

• Validar as credenciais dos utilizadores.

• Fazer as interrogações à base de dados através da execução templates em XML via http.

• Disponibilizar conteúdos a terceiros.

(18)

Figura 11 – Serviços disponibilizados no Web Service.

Na figura 11 a) está representado o serviço responsável pela distribuição dos conteúdos da base de dados a terceiros. Este serviço disponibiliza os conteúdos de 4 formas distintas:

• Com/Sem imagem; • String/DataSet;

permitindo a escolha adequada às necessidades de cada cliente.

Na figura 11 b) está ilustrado o serviço responsável pela comunicação com a página Web. Este serviço contém os métodos de interrogação à base de dados e devolve os resultados no formato de uma string ou num documento XML.

Na figura 11 c) está representado o serviço responsável pela comunicação entre a aplicação do Windows – EdiGest – e a base de dados. Este serviço foi também utilizado

(a) (b)

(19)

em algumas partes do módulo Jornal Beirão on-line (página da Internet), pois disponibiliza os métodos capazes de fazer inserções na base de dados.

Note-se que todos estes serviços estão protegidos. Isto é, só se tem acesso aos seus métodos e propriedades com credenciais válidas.

Finalmente, o módulo 3 consiste numa página da Internet que tem as seguintes características:

a) Visualização dos conteúdos inseridos pelos utilizadores. b) Inserção de edições on-line.

c) Administração, remoção e alteração de conteúdos. d) Formatação do output adequado a dispositivos móveis.

Na figura 12 apresenta-se um exemplo de um template para pesquisar todas as edições, artigos e respectivas imagens do dia corrente.

Figura 12 – Pesquisa de artigos das edições do dia corrente.

O resultado da execução da consulta embutida no template anterior é o documento XML ilustrado na figura 4. Note-se ainda que a comunicação entre todos os módulos acima descritos é efectuada através de ficheiros ou documentos XML.

7 Trabalho

Futuro

Para armazenar convenientemente os dados XML nos sistemas tradicionais (relacionais, objecto-relacionais e orientados aos objectos), é normalmente necessário efectuar mapeamentos, dado que a estrutura de um documento XML e os modelos de dados subjacentes a estes sistemas são implicitamente distintos. Embora alguns mapeamentos possam ser relativamente simples e transparentes, existem, no entanto, algumas situações em que este processo pode ser relativamente complexo, dependendo das estruturas do documento XML e da base de dados em causa. Além disso, para armazenar os dados XML nestes sistemas, é necessário que o documento XML seja fortemente estruturado e que a sua estrutura seja compatível com a do esquema da base de dados. Porém, embora correndo o risco de perder eventualmente alguns dados, é sempre admissível utilizar folhas de estilo XSLT para adequar a estrutura de um documento XML ao esquema de uma base de dados, de modo a que seja possível o armazenamento dos dados XML.

Por outro lado, é também possível utilizar SGBDs semiestruturados e nativos para armazenar dados XML. Apesar de serem as alternativas mais recentes, necessitando

<?xml version="1.0" encoding="UTF-8" ?>

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:query>

SELECT *

FROM artigo a,edicao e,imagem i,tipo_artigo t WHERE e.id_edicao=a.id_edicao

AND t.id_tipoA=a.id_tipoA AND i.id_artigo=a.id_artigo AND datepart(day,e.data_hora)=datepart(day,getdate()) ORDER BY a.id_artigo DESC

FOR XML AUTO </sql:query> </root>

(20)

eventualmente ainda de algum amadurecimento, estas soluções parecem ser as mais adequadas nos casos em que estamos perante dados XML semiestruturados.

Perante este panorama, julgamos ser pertinente considerar a utilização do sistema de ficheiros como um meio simples alternativo (e não proprietário) para armazenar dados XML (quer sejam estruturados ou semiestruturados). Assim, a partir do momento em que a linguagem de interrogação XQuery se tornar numa norma do W3C e existam motores de XQuery estáveis, esperamos vir a testar a possibilidade de substituir a utilização do SGBD Microsoft SQL Server 2000 na nossa aplicação (ver figura 8) pelo armazenamento directo de documentos XML no sistema de ficheiros, desde que, obviamente, consigamos obter resultados aceitáveis. Note-se que nesta nova arquitectura passaríamos a utilizar a linguagem XQuery no lugar da linguagem SQL para consultar os dados que, por sua vez, passariam a estar armazenados sob a forma de ficheiros XML, em vez de estarem sob a forma de tabelas. Note-se ainda que, com esta solução, é também possível efectuar, de forma relativamente simples, a actualização dos documentos XML.

Na figura 13 apresenta-se, a título de exemplo, uma consulta simples, formulada na linguagem XQuery, que pretende demonstrar as potencialidades desta nova abordagem.

Figura 13 – Exemplo de uma consulta formulada na linguagem XQuery para pesquisar um artigo com um determinado título.

Em [Fernandez e Marsh 2002] apresenta-se uma proposta para um modelo de dados para a linguagem XQuery. Em [Fankhauser et al. 2001] propõe-se formalmente uma semântica para a linguagem XQuery. Em [Chamberlin et al. 2002] apresenta-se um tutorial bastante completo sobre a linguagem XQuery. Em [Malhotra et al. 2001] propõe-se uma representação no formato XML da linguagem XQuery, designada por XqueryX. Em [Afonso de Sousa et al. 2001] são analisadas as linguagens XML-QL, XQL, Quilt e XQuery.

Portanto, resumindo, nesta nova arquitectura pensamos vir a utilizar a norma XML para efectuar o armazenamento de dados (no sistema de ficheiros); sempre que necessário, podemos utilizar a norma XML-SCHEMA para definir esquemas para os documentos XML a armazenar (e, eventualmente, a trocar com outras aplicações); a linguagem de interrogação XQuery será utilizada para formular consultas ad hoc sobre os dados XML armazenados nos vários documentos XML, e pensamos também vir a utilizar a norma XSLT como uma linguagem de definição de vistas sobre os dados XML armazenados. A grande vantagem desta nova solução passa pelo facto de eliminarmos a necessidade de utilização de um SGBD proprietário e por passarmos a ter todos os dados da nossa aplicação no formato XML, isto é, prontos a serem disponibilizados, de forma totalmente automática, para qualquer outra aplicação que reconheça o formato de troca previamente estabelecido (através da definição de esquemas comuns implementados com a linguagem XML-SCHEMA). Outra vantagem clara proporcionada por esta

<resultado>

FOR $a IN document(“http://localhost/documento.xml”) //artigo WHERE $a/titulo = “título do artigo”

RETURN

<artigo>$a</artigo> </resultado>

(21)

abordagem reside no facto de só utilizarmos normas (XML, XML-SCHEMA, XSLT e XQuery no futuro), aumentando, assim, o grau de interoperabilidade da nossa aplicação. Contudo, também esperamos algumas dificuldades, nomeadamente a eventual necessidade de utilizar técnicas de indexação para melhorar a performance de algumas consultas.

8 Conclusão

A XML está a revolucionar o mundo da WWW. Apesar de não estar ainda a ser utilizada em grande escala, prevê-se, contudo, que, com o aparecimento de normas para algumas das especificações que lhe estão associadas e de ferramentas estáveis que implementem essas especificações, venha a ser utilizada como a “língua franca” da Internet. Espera-se que venha a desempenhar, brevemente, um papel preponderante na representação, transferência e integração de dados entre sistemas computacionais heterogéneos. Efectivamente, uma das principais características da XML é o facto de ser uma notável interface entre aplicações, permitindo a obtenção de um elevado nível de automação e de interoperabilidade.

A utilização da linguagem de definição de esquemas XML-SCHEMA vai francamente facilitar os mapeamentos entre os documentos XML e estas bases de dados convencionais, uma vez que, como já oportunamente se demonstrou, se trata de uma linguagem muito mais poderosa do que as anteriores declarações de tipos do documento, no que concerne à representação de tipos de dados e à definição de restrições semânticas, que, como é manifestamente reconhecido, são fundamentais nas bases de dados convencionais.

Numa perspectiva de relacionamento entre as várias abordagens baseadas em SGBDs, parece poder-se concluir que, enquanto os SGBDs relacionais e objecto-relacionais recorrem a uma tecnologia já madura, os SGBDs semiestruturados estão ainda na sua infância. Por outro lado, os SGBDs orientados aos objectos atingiram já algum nível de maturidade. Os SGBDs semiestruturados utilizam modelos de dados, baseados em árvores/grafos, semelhantes à XML, enquanto na utilização dos SGBDs relacionais, objecto-relacionais e orientados aos objectos existe a necessidade de efectuar mapeamentos, com os custos daí resultantes. No entanto, são necessários mais estudos acerca da performance destes SGBDs na gestão dos dados XML, bem como comparações de desempenho entre os vários SGBDs que utilizam modelos de dados distintos.

Uma abordagem alternativa para armazenar documentos XML consiste em utilizar o sistema de ficheiros. Como oportunamente se demonstrou, um documento XML é uma autêntica base de dados. Contudo, apesar de ser possível utilizar a XML como um meio de armazenamento, actualmente, parece ser preferível armazenar os dados (XML) em SGBDs. Assim, considera-se que os SGBDs e a XML oferecem funcionalidades complementares. Isto é, enquanto os primeiros armazenam os dados para depois poderem ser eficazmente consultados, a XML oferece um modo fácil e flexível de troca de dados entre bases de dados heterogéneas. Porém, o aparecimento de uma norma para a linguagem de interrogação XQuery irá, com certeza, catalisar o papel da XML como um considerável meio alternativo de armazenamento de dados, uma vez que se tornará possível consultar eficientemente, e de uma forma não prevista (consultas ad hoc), os documentos expressos no formato XML. Assim, codificar a informação disponível na WWW no formato XML é um primeiro passo significativo para permitir a execução

(22)

eficiente de interrogações ad hoc sobre a grande quantidade de informação presente na Web.

Espera-se que a linguagem XQuery seja tão poderosa como as linguagens de interrogação já existentes para outros modelos de dados, tais como a SQL para o modelo relacional, e a OQL para o modelo orientado a objectos. Isto é, espera-se que tenha a faculdade de seleccionar, extrair, eliminar, combinar e transformar o conteúdo de um documento XML; que tenha a capacidade de actuar sobre dados sem esquema predefinido; que possa interrogar vários documentos XML simultaneamente; e que suporte a utilização de funções de agregação. Para além destas características, espera-se também que esta linguagem de interrogação devolva os resultados das consultas no formato XML, tenha a capacidade de ser manipulável por software, e que seja fácil de utilizar.

A XML está a fazer convergir a comunidade da Internet com a comunidade das Bases de Dados. A experiência desta última em áreas como os modelos de dados, as linguagens de interrogação, o armazenamento, extracção, transformação e integração de dados, pode - e deve - ser considerada no âmbito da XML. O trabalho de investigação recentemente realizado pela comunidade das Bases de Dados na área dos modelos de dados semiestruturados (OEM), é um exemplo muito relevante da aproximação entre as duas comunidades. O desenvolvimento da norma para uma linguagem de interrogação para documentos XML é também um notável exemplo de convergência entre estas duas comunidades científicas.

Referências

[Adler et al. 2001] Adler, S., Berglund, A., Caruso, J., Deach, S., Grosso, P., Gutentag, E., Milowski, A., Parnell, S., Richman, J. e Zilles, S., Extensible Stylesheet Language (XSL) Version 1.0, W3c Recommendation, 15 de Outubro de 2001.

[Afonso de Sousa et al. 2000] Afonso de Sousa, A., Pereira, J. e Carvalho, J., “A Linguagem XML numa Perspectiva de Bases de Dados”, Proceedings da 1.ª Conferência da Associação Portuguesa de Sistemas de Informação, Guimarães, Outubro de 2000.

[Afonso de Sousa et al. 2001] Afonso de Sousa, A., Pereira, J. e Carvalho, J., “Linguagens de Interrogação para Documentos em Formato XML”, Proceedings da 2.ª Conferência da Associação Portuguesa de Sistemas de Informação, Évora, Novembro de 2001.

[Afonso de Sousa 2002] Afonso de Sousa, A., Bases de Dados, Web e XML, Editora FCA, 2002.

[Afonso de Sousa et al. 2002 a]Afonso de Sousa, A., Pereira, J.L. and Carvalho, J. Á., “Storage and Management of XML Data Using Conventional Databases”, Proceedings of the Ibero American Conference on Web Engineering 2002, Santa Fe, Argentina, September 2002.

[Afonso de Sousa et al. 2002 b] Afonso de Sousa, A., Pereira, J.L. and Carvalho, J. Á., “Semi-structured Databases and the file system to Store and Manage XML Data”, Proceedings of the Ibero American Conference on Web Engineering 2002, Santa Fe, Argentina, September 2002.

[Afonso de Sousa et al. 2002 c] Afonso de Sousa, A., Pereira, J.L. and Carvalho, J. Á., “Querying XML Databases”, Proceedings of the XXII International Conference of the Chilean Computer Science Society, Copiapó, Chile, November 2002. IEEE C-S Press.

(23)

[Afonso de Sousa et al. 2002 d] Afonso de Sousa, A., Pereira, J. and Carvalho, J., Á., “Mapping Rules to Convert from ODL to XML-SCHEMA”, Proceedings of the XXII International Conference of the Chilean Computer Science Society, Copiapó, Chile, November 2002. IEEE C-S Press.

[Biron e Malhotra 2001] Biron, P. V. e Malhotra, A, XML Schema part 2: Datatypes, W3C Recommendation, 2 de Maio de 2001.

[Bos et al. 1998] Bos, B., Lie, H., Lilley, C. e Jacobs, I., Cascading Style Sheets, level 2, W3C Recommendation, 12 de Maio de 1998.

[Bourret et al. 1999] Bourret, R. et al., Document Definition Markup Language, submission to the World Wide Web Consortium, Janeiro de 1999.

[Bray et al. 1998a] Bray, T., Paoli, J. e Sperberg-McQueen, C, A., Extensible Markup Language, World Wide Web Consortium Recommendation, 10 de Fevereiro de 1998. [Bray et al. 1998b] Bray, T., Frankston, C. e Malhotra, A., Document Content Description,

Submission to the World Wide Web Consortium, Julho de 1998.

[Cattell e Barry 2000] Cattel, R. G. G. e Barry, D., The Object Data Standard: ODMG 3.0, Morgan Kaufmann, 2000.

[Chamberlin et al. 2002] Chamberlin. D, Fankhauser, P., Marchiori M., e Robie, J., XML Query Use Cases, W3C Working Draft, Abril de 2002.

[Chaudhri e Zicari 2000] Succeding With Object databases, Willey, 2000.

[Clark 1999] Clark, J., XSL Transformations (XSLT) Version 1.0, W3C Recommendation, 16 de Novembro de 1999.

[Davidson et al. 1999] Davidson, A. et al., Schema for Object-Oriented, SOX 2.0, W3C Note, Julho de 1999.

[Duckett et al. 2001] Duckett, J., Griffin, O., Mohr, S., Norton, F., Williams, K., Cagle, K., Ozu, N., e Tennison, J., Professional XML Schemas, Wrox, 2001.

[Fallside 2001] Fallside, D., XML Schema Part 0: Primer, W3C Recommendation, 2 de Maio de 2001.

[Fankhauser et al. 2001] Fankhauser, P., Fernandez, M., Malhotra, A., Rys, M., Siméon, J., e Wadler, P., XQuery 1.0 Formal Semantics, W3C Working Draft, Junho de 2001.

[Fernandez e Marsh 2002] Fernandez, M., e Marsh, J., XQuery 1.0 and XPath 2.0 Data Model, W3C Working Draft, Abril de 2002.

[Goldman et al. 1999] Goldman, R., McHugh, J. e Widom, J., “From semistructured data to XML: Migrating the Lore data model and query language”, ACM SIGMOD Workshop on the Web (WebDB), Philadelphia, 1999, 25-30.

[Goldman et al. 2000] Goldman, R., McHugh, J. e Widom, J., “Lore: A Database Management System for XML”, Dr. Dobb’s Journal, Abril de 2000.

[Holzner 1999] Holzner, S., XML Complet, McGraw-Hill , pg. 221-278, 1998

[Kanne e Moerkotte 2000] Kanne, C. e Moerkotte, G., “Efficient Storage of XML Data”, Proceedings of the 16th International Conference on Data Engineering, San Diego, California, Março de 2000.

[Klarlund et al. 1999] Klarlund, N., Moller, A. e Schwartzbach, M., DSD: A Schema Language for XML., Novembro 1999.

[Layman et al. 1998] Layman, A. et al., XML-Data, W3C Note, Janeiro de 1998.

[Malhotra e Maloney 1999] Malhotra, A. e Maloney, M., XML Schema Requirements, W3C Note, Fevereiro de 1999.

(24)

[Malhotra et al. 2001] Malhotra, A, Rys, M., e Robie, J., XML Syntax for XQuery 1.0 (XQueryX), W3C Working Draft, Junho de 2001.

[McHugh et al. 1997] McHugh, J., Abiteboul, S., Goldman, R., Quass, D. e Widom, J., “Lore: A database management system for semistructured data”, ACM SIGMOD Record, (1997), 26, 3, 1997.

[McHugh e Widom 1999b] McHugh, J. e Widom, J., “Query optimisation for XML”, Proceedings of the Twenty-Fifth International Conference on Very Large Data Bases, Edinburgh, Scotland, Setembro de 1999, 315-326.

[Robie 1999] Robie, J., The design of XQL, 1999.

[Thompson et al. 2001] Thompson, H. S., Beech, D. B., Maloney, M. e Mendelsohn, N., XML Schema Part 1: Structures, W3C recommendation, 2 de Maio de 2001.

Imagem

Figura 1 - Motivações que conduziram à invenção da XML.
Figura 2 - Exemplo de um documento XML.
Figura 4 – Documento XML que contém dados sobre edições, artigos e respectivas  imagens
Figura 5 – Folha de estilo EdicaoFich.xslt.
+7

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Deste modo, verificou-se que, tanto para o Grupo A (p=0,49), como para o Grupo B (p=0,39) não existem diferenças estatisticamente significativas nas notas médias

Para fins didáticos, este capítulo pode é dividido em duas frentes distintas: a primeira parte foca na apresentação geral das pontes rolante, explicando os tipos e

Para reverter essa situa~ão, o setor tel que se tornar aais eficiente e versátil no trata.ento dos recursos florestais.. Pelas suas características tecnológicas, as quais perlitel

4 RESULTADOS E DISCUSSÃO 4.1 Caracterização da cobertura florestal e da biodiversidade vegetal no entorno dos cultivos de tomate na região de Apiaí-SP a Módulos

Neste tipo de situações, os valores da propriedade cuisine da classe Restaurant deixam de ser apenas “valores” sem semântica a apresentar (possivelmente) numa caixa

ed è una delle cause della permanente ostilità contro il potere da parte dell’opinione pubblica. 2) Oggi non basta più il semplice decentramento amministrativo.

O fato dos professores não perceberem a utilização no ambiente escolar dos recursos tecnológicos como mediadores de informação e comunicação, é aspecto que pode ser