GerenciaDadosXML-MinicursoERI2003

Propaganda
Gerenciamento de Dados XML
Ronaldo dos Santos Mello
Departamento de Informática e Estatística (INE) – Centro Tecnológico (CTC) –
Universidade Federal de Santa Catarina (UFSC)
Campus Universitário Trindade - Caixa Postal 476 – 88040-900 – Florianópolis – SC.
[email protected]
Abstract. XML is a largely used standard for data representation and
exchange, specially by people and applications that work on the Web.
Considering the increasing need for defining, manipulating and storing XML
data, the database community is focusing its research efforts to the proposal of
solutions related to the management of XML data. This course aims at
reviewing the XML technology and discussing some XML data management
problems based on two points of view: a relational database that stores XML
documents and a native XML database.
Resumo. XML é um padrão cada vez mais utilizado para a representação e
intercâmbio de dados, especialmente entre pessoas e aplicações que utilizam a
Web. Considerando a crescente necessidade de definição, manipulação e
armazenamento de dados XML, a comunidade de banco de dados começa a
intensificar suas pesquisas no sentido de propor soluções relacionadas ao
gerenciamento de dados XML. Este mini-curso tem por objetivo revisar a
tecnologia XML e discutir problemas de gerenciamento de dados XML do
ponto de vista de um banco de dados relacional que mantém documentos XML
ou de um banco de dados XML nativo.
1. Introdução
XML é um formato padrão para transferência de dados entre computadores. Diversos
domínios de aplicação, como comércio eletrônico [CXM03,EBi03] e cadastro
bibliográfico [DBL03,SIG03], vêm definindo protocolos XML para os seus dados e
cada vez mais aplicações e pessoas disponibilizam e manipulam informações XML na
Web. O uso cada vez mais intensivo de XML vem despertando o interesse de diversas
áreas da ciência da computação, como linguagens de programação, engenharia de
software e bancos de dados, todas elas preocupadas com a definição de mecanismos
para o tratamento de dados neste formato.
Do ponto de vista da área de Banco de Dados (BD), um documento XML é uma
coleção de dados, da mesma forma que um BD. Porém, um documento XML tem a
vantagem de manter dados auto-descritivos e facilmente portáveis [BOU03]. A
tecnologia XML assemelha-se bastante com a tecnologia de Sistemas Gerenciadores de
BD (SGBDs), uma vez que possui um formato de armazenamento específico
(documento), permite a definição de esquemas, possui linguagens de consulta e define
interfaces (APIs) para o acesso a dados. Entretanto, a tecnologia XML não é equivalente
à tecnologia de SGBD, pois não existem soluções para todos os aspectos de
gerenciamento de dados, como controle de integridade, gerenciamento de transações,
indexação e consultas a múltiplos documentos.
Além disso, o formato de um dado XML é altamente irregular e muitas vezes
combina texto em linguagem natural com informações estruturadas. Assim sendo, BDs
tradicionais, como os BDs relacionais, são incapazes de armazenar diretamente
ocorrências de dados XML.
Toda esta problemática associada ao tratamento de dados XML vem estimulando
a comunidade científica de BD a estudar e desenvolver soluções para o gerenciamento
de dados XML persistentes. Neste contexto, duas frentes de pesquisa vêm se
consolidando: uma que procura estender a tecnologia de BDs relacionais para o suporte
a dados XML e outra que está investindo no desenvolvimento de BDs específicos para
dados XML, chamados BDs XML nativos. O foco principal deste mini-curso é, além de
apresentar a tecnologia XML, mostrar um panorama da problemática enfrentada por
estas duas frentes de pesquisa e algumas soluções já propostas.
O restante deste resumo estendido está organizado da seguinte forma: a seção
dois revisa a tecnologia XML: documentos XML, esquemas, linguagens de consulta e
de transformação de dados e interfaces de acesso. A seção três apresenta o estado da arte
em termos de pesquisa em gerenciamento de dados XML e a seção quatro é dedicada às
conclusões.
2. A Tecnologia XML
XML (eXtensible Markup Language) é uma meta-linguagem de marcação desenvolvida
pelo consórcio W3C (World Wide Web Consortium), sendo considerada um padrão para
a publicação e transferência de dados de diferentes domínios de aplicação na Web
[XML03,BRA02]. Sendo uma linguagem de marcação, XML utiliza delimitadores (ou
tags) para descrever dados, assim como a linguagem HTML. A diferença entre HTML e
XML é que tags em HTML descrevem instruções para apresentação de dados em
browsers Web, enquanto tags em XML denotam uma interpretação semântica para o
dado delimitado por ela. Como esta interpretação é particular para cada domínio de
aplicação, XML é dita uma meta-linguagem, pois cada aplicação tem a liberdade de
definir a sua própria linguagem de marcação de dados, descrevendo a nomenclatura e a
estruturação das tags que julgar apropriada.
Um conjunto de dados XML sempre é descrito em um documento XML. A
Figura 1 mostra um exemplo de um documento XML para o domínio de publicações de
artigos científicos.
Um dado XML é chamado de elemento, sendo o seu conteúdo delimitado por
uma tag inicial e uma tag final. O conteúdo de um elemento pode ser um conjunto de
elementos componentes (por exemplo, o elemento autor, composto de nome e
eMail), um texto de comprimento arbitrário (por exemplo, o elemento título) ou
um misto de texto e elementos componentes (por exemplo, o elemento seção). Um
elemento pode ter atributos, que descrevem algumas de suas propriedades na tag inicial
(por exemplo, o atributo versão do elemento artigo).
<?xml version =“1.0” encoding =“UTF-8” standalone =”yes”>
<publicacoes>
<artigo versao=“1”>
<titulo>XML</titulo>
<autor>
<nome>João da Silva</nome>
<eMail>[email protected]</eMail>
</autor>
<autor>
<nome>Maria Souza</nome>
</autor>
<secao nome=“Introducao”>XML foi ...
<subsecao>Linguagens de Marcacao</subsecao>
...
</secao>
...
</artigo>
...
</publicacoes>
Figura 1. Exemplo de um documento XML
Como pode ser visto na Figura 1, a organização dos dados em um documento
XML é hierárquica, existindo sempre um elemento raiz que é composto por um ou mais
elementos que podem, por sua vez, conter uma outra hierarquia de elementos. Um
documento XML é dito bem formado se contiver um elemento raiz e todos os seus
elementos possuírem uma tag inicial, uma tag final e atributos com conteúdo delimitado
por aspas simples (‘) ou duplas (“).
A tecnologia XML não se resume apenas ao formato de descrição de dados, mas
a todo um conjunto de especificações que possibilita o gerenciamento de dados XML.
As principais especificações são descritas a seguir.
2.1 DTD e XSD
A organização ou esquema dos elementos em um documento XML pode ser definida
basicamente de duas maneiras: através de um DTD (Document Type Definition) ou de
um XSD (XML Schema Definition) [XSC03]. Ambos especificam elementos válidos
que podem ocorrer em um documento, a ordem na qual eles ocorrem e algumas
restrições sobre a estrutura e o conteúdo destes elementos. Um documento XML é dito
válido se estiver de acordo com um esquema DTD ou XSD associado a ele.
DTD foi a primeira recomendação da W3C para a especificação de esquemas de
documentos XML. Um DTD é uma gramática formada basicamente por cláusulas
ELEMENT e ATTLIST. Estas cláusulas descrevem, respectivamente, um elemento e
uma lista de atributos de um elemento. A Figura 2 (a) mostra a DTD do documento
XML da Figura 1. Neste esquema, o elemento raiz publicações é composto por um ou
mais elementos do tipo artigo. Um elemento artigo possui um atributo versão e define
uma seqüência composta por um elemento título (com conteúdo textual - #PCDATA),
um ou mais elementos do tipo autor e zero ou mais elementos do tipo seção. Cada autor
possui um nome e um eMail opcional. Cada seção possui um atributo nome e define um
misto de texto e sub-elementos do tipo subseção.
<!ELEMENT publicacoes (artigo+)>
<!ELEMENT artigo (titulo, autor+,secao*)>
<!ATTLIST artigo versao CDATA>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT autor (nome, eMail?)>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT eMail (#PCDATA)>
<!ELEMENT secao (#PCDATA | subsecao)*>
<!ATTLIST secao nome CDATA>
<!ELEMENT subsecao (#PCDATA)>
(a)
<?xml version =“1.0” encoding =“UTF-8” ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name=”publicacoes”>
<complexType>
<element ref=”artigo” maxOccurs=”unbounded”/>
</complexType>
</element>
<element name=”artigo”>
<complexType>
<sequence>
<element name=”titulo” type=”string”/>
<element ref=”autor” maxOccurs=”unbounded”/>
<element ref=”secao” maxOccurs=”unbounded”/>
</sequence>
<attribute name=”versao” type=”decimal”/>
</complexType>
</element>
<element name=”autor”/>
<complexType>
<sequence>
<element name=”nome” type=”string”/>
<element name=”eMail” type =”string” minOccurs=”0”/>
</sequence>
<attribute name=”versao” type=”decimal”/>
</complexType>
</element>
<element name=”secao”/>
<complexType mixed=”true”>
<element name=”subsecao” type =”string” minOccurs=”0”/>
<attribute name=”nome” type=”string”/>
</complexType>
</element>
</schema>
(b)
Figura 2. Exemplos de esquemas para documentos XML definidos através de
um DTD (a) e de um XSD (b)
XSD é uma recomendação recente da W3C e possui mais recursos para a
especificação de esquemas em relação a um DTD, como o suporte a tipos de dados, a
conceitos de orientação a objetos, como herança e polimorfismo, além de apresentar
uma sintaxe XML. A Figura 2 (b) descreve o esquema do documento XML da Figura 1
em XSD. Apesar de XSD ser mais expressivo que um DTD em termos de especificação
de esquemas XML, DTDs ainda são amplamente utilizados e a grande maioria das
ferramentas que realizam validação de documentos XML (chamadas parsers) operam
sobre DTDs.
2.2 XPath e XQuery
Consultas a dados de documentos XML são definidas através de duas linguagens: XPath
e XQuery. Ambas são capazes de percorrer documentos XML, definir predicados de
seleção e retornar dados no formato XML como resultado.
XPath foi a primeira recomendação da W3C para a consulta a dados XML
[XPA03]. Ela é uma linguagem para navegação na estrutura de um documento XML e
recuperação de fragmentos de documentos alcançados por uma expressão de navegação.
Sua sintaxe é semelhante à sintaxe para navegação em diretórios de arquivos Unix ou
DOS. A Figura 3(a) mostra três exemplos de expressões XPath executadas sobre o
documento XML da Figura 1. A consulta superior recupera títulos de artigos. A consulta
central ilustra a definição de um critério de seleção (delimitado por colchetes),
recuperando títulos de artigos da autora de nome Maria, enquanto a consulta inferior
busca atributos (indicados pelo caractere ‘@’) nome de todos os elementos que são
filhos imediatos (indicado pelo caractere ’*’) do elemento artigo cujo atributo
versão possui valor superior a 1.
/publicacoes/artigo/titulo
//artigo/autor[nome = ´Maria´]/titulo
//artigo[@versao > 1]/*/@nome
(a)
for $art in /publicacoes/artigo
let $v := $art/@versao * 10
where $art/autor/nome = “Maria”
return {$art/titulo, $v}
(b)
Figura 3. Exemplos de consultas em XPath (a) e XQuery (b)
Apesar de satisfazer a diversas intenções de consulta, a linguagem XPath
apresenta algumas limitações. Expressões XPath retornam somente porções de um
documento XML, sendo incapazes de produzir resultados de consultas com uma
estrutura diferente daquela existente no documento. Além disso, ela não é capaz de
realizar junções entre dados XML. A linguagem XQuery [XQU03], uma recomendação
mais recente da W3C, corrige estas deficiências da XPath.
XQuery é uma linguagem de consulta declarativa para dados XML. A estrutura
básica de um comando XQuery é mostrada na Figura 3(b), sendo composta pelo bloco
de instruções For-Let-Where-Return (expressão FLOWER). A consulta exemplo
busca títulos de artigos da autora Maria e o número da versão do artigo multiplicado por
10. Este exemplo ilustra a capacidade de XQuery de gerar estruturas de resultado
diferentes daquelas existentes no documento XML.
2.3 XSL
XSL (eXtensible Stylesheet Language) é uma recomendação da W3C para a
transformação e apresentação de dados XML [XSL03]. Através da XSL é possível
definir estilos particulares de visualização para XML, da mesma forma que a linguagem
HTML faz com dados a serem visualizados em browsers Web. Além disto, XSL tem a
capacidade de manipular dados de documentos XML, realizando, por exemplo, a
reorganização da estrutura hierárquica do documento (gerando um novo documento
XML) ou a transformação do documento em um outro formato de arquivo, como HTML
ou PDF.
Para a definição de uma formatação ou transformação de dados XML, um
documento XSL deve ser criado e um programa processador de instruções XSL deve ser
executado. Alguns browsers Web funcionam como processadores XSL, ou seja, são
capazes de analisar um documento XSL (referenciado por um documento XML) e exibir
os dados XML de acordo com as instruções definidas. A Figura 4 mostra um trecho de
um documento XSL.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl
="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head><title>Lista de Artigos</title></head>
<body>
</xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="artigo/titulo">
<BR/>
<B>Título: </B>
<xsl:value-of select=""/><BR/>
</xsl:template>
...
Figura 4. Exemplo de um trecho de documento XSL
XSL utiliza uma sintaxe XML e suas principais instruções são baseadas em
reconhecimento de padrões existentes no documento XML (instrução template na
Figura 4) e sua posterior modificação para o formato de saída desejado (conjunto de
instruções dentro da instrução template ou dos dados de saída). A linguagem XPath é
utilizada para a definição do padrão a ser identificado (valor do atributo match da
instrução template), que geralmente corresponde a um nome de elemento ou atributo,
ou ainda a uma certa estrutura hierárquica presente no documento XML.
O documento XSL ilustrado na Figura 4 tem a intenção de gerar um arquivo
HTML a partir dos dados do documento XML da Figura 1 para fins de exibição em um
browser. Quando o elemento raiz do documento é identificado (padrão “/” na primeira
instrução template), um cabeçalho de arquivo HTML é gerado e o processamento de
transformação é recursivamente aplicado aos elementos restantes do documento XML
(instrução apply-templates). A segunda instrução template insere uma string
Titulo em negrito mais o valor de um título de artigo no arquivo de saída HTML, toda
vez que um título de artigo for encontrado no documento XML.
2.4 DOM
DOM (Document Object Model) [DOM03] é uma tecnologia que permite o
processamento de dados XML pelas aplicações. Ela disponibiliza uma API (Application
Program Interface) com métodos de acesso e manipulação de documentos XML.
Diversos parsers para validação de documentos XML suportam a API DOM. Alguns
browsers Web são capazes de processar instruções DOM definidas em scripts HTML.
DOM é um modelo de objetos que representa um documento XML através de
uma estrutura hierárquica em árvore. A API DOM fornece métodos para transformar o
documento em uma instância do modelo e manipular objetos documento, nodo da árvore
(atributos, elementos ou valores) e particularmente nodos elemento. A Figura 5 mostra
alguns métodos da interface DOM sendo ativadas, por exemplo, dentro de um programa
JavaScript. A interface para objetos documento permite, por exemplo, a busca do nodo
raiz do documento, através do método documentElement. Já a interface para objetos
nodo permite o acesso aos seus nodos filhos (método childNodes) em uma ordem
específica (método item(int)). Neste exemplo, atribui-se à variável artigo1 o
nodo que corresponde ao primeiro artigo do documento XML.
...
raiz = doc.documentElement;
artigo1 = raiz.childNodes.item(0);
...
Figura 5. Exemplos de métodos da API DOM
3. XML e Bancos de Dados
Aplicações desenvolvidas para a Web ou que utilizam a Web para a transferência de
dados utilizam amplamente protocolos XML. Quando dados XML necessitam ser
mantidos em um BD, existe a necessidade de se gerenciar adequadamente estes dados.
Novos desafios surgem em decorrência desta necessidade, uma vez que a tecnologia de
BD precisa ser adaptada para garantir o armazenamento e manipulação de dados XML
de forma eficiente.
Um documento XML pode ser considerado uma coleção de dados, da mesma
forma que um BD. Porém, um dado XML possui uma natureza diferente de um dado
convencional de um BD, uma vez que um dado de BD é um dado totalmente estruturado
enquanto que um dado XML é um dado semi-estruturado [ABI00]. Em um dado
tipicamente semi-estruturado, apenas parte de sua definição possui alguma estruturação
e cada ocorrência de um mesmo dado possui um esquema particular e auto-descritivo.
Desta forma, o esquema de representação destes dados é bastante irregular. Uma seção
de um artigo científico analisada por um revisor é um exemplo. Cada seção de um artigo
é basicamente um texto contínuo, podendo este texto conter subseções e parágrafos bem
delimitados. Além disso, comentários do revisor podem estar documentados em
qualquer ponto do texto da seção, com a indicação do problema encontrado e de uma
eventual sugestão de correção. A Figura 6 exemplifica este contexo, mostrando duas
ocorrências de dados do tipo seção com estruturas bastante distintas.
<seção> Esta é uma seção exemplo. Toda
<comentário><problema>Erro
concordância</problema><correção>Todas
</correção></comentário> as seções
contém texto.
<subseção><parag>
Este é o primeiro parágrafo da
primeira sub-seção.
</parag>...</subseção>
</seção>
<seção>
Esta é uma outra instância de seção,
formada apenas por um texto contínuo e
sem sub-elementos no seu interior.
</seção>
Figura 6. Exemplos de ocorrências de dados semi-estruturados
O fato de um dado XML ter uma organização mais ou menos semi-estruturada
define duas categorias de documentos XML [BOU03]:
 Documento XML Orientado a Dados (DOD): documento fracamente semiestruturado, ou seja, possui uma estrutura mais regular e repetitiva.
Documentos desta categoria são tipicamente usados para transferência de
dados convencionais entre aplicações. Notas fiscais e relatórios de clientes e
produtos são alguns exemplos;
 Documento XML Orientado a Documentos (DODoc): documento fortemente
semi-estruturado, ou seja, possui uma estrutura mais irregular e particular.
Documentos desta categoria são tipicamente usados para o relato da
linguagem natural, com destaque para alguns dados delimitados dentro do
seu conteúdo. Livros e anúncios classificados são alguns exemplos.
O modo como os dados XML são gerenciados está intimamente relacionada a
estas duas categorias de documentos. Aplicações que lidam com DODs geralmente
utilizam BDs relacionais, uma vez que os dados XML são fortemente estruturados. Já
aplicações que lidam com DODocs utilizam BDs específicos para o gerenciamento de
dados XML, chamados BDs XML nativos (ou simplesmente BDs XML). Estes BDs
utilizam mais efetivamente a tecnologia XML para a representação e o acesso a dados.
Estas duas alternativas para gerenciamento de dados XML são detalhadas a seguir.
3.1 Gerenciamento de Dados XML através de BDs Relacionais
SGBDs relacionais vêm sendo bastante utilizados para o armazenamento de dados XML
quando o foco da aplicação é nos dados propriamente ditos e não no formato XML de
organização hierárquica e ordenada de dados. Este é o caso, por exemplo, de aplicações
que fazem intercâmbio de dados estruturados (dados geralmente mantidos em arquivos
ou BDs) através da Web utilizando XML. Esta abordagem de gerenciamento tem a
vantagem de utilizar a tecnologia de BD, que apresenta bom desempenho de acesso a
dados e utiliza linguagens de consulta declarativas, para a manipulação de dados XML.
Por outro lado, os SGBDs relacionais devem se preocupar com a forma como dados de
documentos XML devem ser armazenados e com a definição de métodos de acesso
específicos para estes dados.
3.1.1 Armazenamento de Dados XML
O armazenamento de dados XML em um BD relacional exige a definição de um
mapeamento entre o esquema do documento XML e o esquema do BD. As seguintes
soluções são geralmente adotadas [GRA03]:
 Uso de aplicações middleware: o objetivo neste caso é transferir dados entre
BDs, ou seja, não há o armazenamento de novos documentos XML, mas sim o
armazenamento de dados de BD que foram mapeados para um formato XML.
Uma aplicação middleware gera um documento XML que corresponde
exatamente à estrutura do BD e o transfere para outro BD, onde o mapeamento
no sentido contrário ocorre. Um exemplo simples é a conversão de um BD
relacional para um formato XML, como mostra a Figura 7. Neste exemplo, o
documento XML tem como elemento raiz o próprio BD, que é formado por
elementos do tipo tabela. Cada elemento tabela, por sua vez, é composto de
elementos linhas que mantêm os conteúdos dos dados em cada coluna.
<BD>
<tabela nome=”tabela1”>
<linha>
<coluna1> ...</coluna1>
<coluna2> ...</coluna2>
...
</linha>
...
</tabela nome=”tabela2”>
...
</BD>
Figura 7. Representação de um esquema relacional no formato XML
 Suporte a dados XML pelo SGBD relacional: têm-se, neste caso, SGBDs que
sabem como converter documentos XML em esquemas relacionais e vice-versa.
Esta é a solução adotada por vários SGBDs e é discutida em mais detalhes na
seqüência. Grandes fabricantes de SGBDs relacionais, como Oracle e DB2, vêm
estendendo as funcionalidades dos seus sistemas para lidar com dados XML.
Dois enfoques para o mapeamento de dados XML para tabelas de um BD
relacional são propostos na literatura. Um deles, apresentado em [FLO99], vê um
documento XML como um grafo orientado rotulado cujas arestas são ordenadas e
representam relacionamentos hierárquicos entre elementos, entre elemento e atributo, ou
entre elemento/atributo e conteúdo. Diversas alternativas são propostas para o
armazenamento deste grafo em um BD relacional. As duas alternativas mais viáveis em
termos de desempenho são as seguintes:
 Alternativa 1: todas as arestas são mantidas em uma única tabela com colunas
que informam o nodo pai, o nome do rótulo, a ordem da aresta dentre todos os
nodos filhos e uma referência a um nodo filho e ao valor (se houver) do nodo
destino;
 Alternativa 2: arestas com o mesmo rótulo são mantidas em tabelas separadas,
equivalendo a uma tabela para cada tipo de elemento ou atributo. Colunas que
informam o nodo pai, a ordem da aresta e uma referência ao nodo (com um
possível valor) são necessárias.
A Figura 8 exemplifica o armazenamento do documento XML da Figura 1 nas
alternativas 1 (a) e 2 (b). Supõe-se que o nodo 1 representa o elemento raiz
(publicações), o nodo 2 representa a primeira ocorrência do elemento artigo, e assim
sucessivamente, conforme o nível dos nodos na árvore.
Arestas
origem
Artigos
ordem
nome
tipo
destino
valor
Origem
ordem
destino
1
1
artigo
ref
2
1
1
2
1
2
artigo
ref
3
1
2
20
origem
ordem
destino
valor
2
1
11
XML
3
1
23
BD e XML
...
...
2
1
versão
int
10
1
2
2
título
string
11
XML
Títulos
...
(a)
...
...
(b)
Figura 8. Exemplos de armazenamento de um documento XML em
um
relacional segundo a visão de [FLO99]: alternativa 1 (a) e alternativa 2 (b)
BD
A alternativa 1 exige mais de espaço de armazenamento que a alternativa 2 pois
necessita de uma coluna adicional para manter nomes de rótulos. No entanto, é a
alternativa mais rápida para processar consultas que navegam na estrutura de um
documento XML, pois não há a necessidade de junções entre tabelas, como no caso da
alternativa 2. O problema principal deste enfoque como um todo é o tempo para
reconstrução de um documento XML, pois ambas as alternativas fragmentam o
documento em arestas ou nodos, sendo necessária a investigação de muitas referências a
nodos para determinar a estrutura do documento. Além disso, são necessários dados
adicionais no esquema relacional que informem se um nodo é um elemento ou um
atributo.
Outro enfoque de armazenamento baseia-se em níveis de granularidade (ou de
detalhamento) que podem ser definidos para um documento XML [GRA03]. Em função
destes níveis, um esquema de armazenamento relacional é definido. Três níveis de
granularidade podem ser definidos:

Granularidade grande: define uma única tabela para armazenar todos os
documentos XML. As colunas desta tabela descrevem basicamente o
identificador do documento, seu nome e um campo longo para o seu
conteúdo. Este é o nível com menor detalhamento de dados XML;

Granularidade pequena: define uma tabela para cada tipo de elemento ou
atributo existente em um documento XML, exigindo colunas adicionais para
manter os relacionamentos hierárquicos entre elementos e a ordem de subelementos ou atributos de um elemento. Este é o nível de maior
detalhamento de dados XML;

Granularidade média: define um meio termo entre os níveis de
granularidade grande e pequena, ou seja, parte do esquema do documento é
definida de forma estruturada (em geral os elementos de nível superior no
documento) e parte é armazenada na forma de um campo longo. A decisão
pelos pontos exatos de divisão na árvore do documento depende basicamente
do nível de detalhe das consultas desejadas (e conseqüentemente, das
colunas que necessitam ser indexadas) e do tamanho de buffer para
transmissão de dados, que pode ser equivalente ao tamanho dos campos
longos.
Quanto maior o nível de granularidade, mais simples é a definição do esquema
relacional e menos detalhes do documento XML são passíveis de consulta. No nível de
granularidade grande não é possível definir consultas declarativas com base em valores
de elementos e atributos, por outro lado, não existe um custo associado à reconstrução
do documento XML. Estes prós e contras devem ser considerados quando do projeto do
BD relacional.
3.1.2 Acesso a Dados XML
O acesso a dados através de um SGBD deve considerar a estrutura lógica do modelo do
BD para a definição de expressões de consulta. No caso de um BD relacional, a
linguagem SQL é o protocolo padrão para acesso a tabelas. Caso um mapeamento de
granulação pequena (considerando também as alternativas de [FLO99]) ou média seja
adotado, atributos e elementos estão em tabelas e podem ser consultados via SQL.
Entretanto, extensões da SQL são propostas para lidar com consultas a esquemas
de mapeamento com granulação média ou grande, assim como para possibilitar visões
XML de resultados de consultas [BOU03]. Um exemplo para o primeiro caso é a
ferramenta XML Extender do SGBD DB2. No DB2 pode-se armazenar um documento
XML completo em um atributo do tipo XMLCLOB ou XMLVARCHAR de uma tabela.
A Figura 9 (a) ilustra a definição da tabela Artigos, que mantém um documento XML
sobre artigos científicos no atributo doc.
TABLE Artigos
SELECT código, nome
código VARCHAR(10) NOT NULL
PRIMARY KEY
FROM Artigos
WHERE extractVarchar (doc,
nome VARCHAR(40)
“/Publicacoes/artigo/titulo”) LIKE
doc
“%XML%”
XMLVARCHAR
(a)
(b)
Figura 9. Exemplo de definição de tabela no DB2 XML Extender para manter
documentos XML (a) e de uma consulta SQL estendida sobre os dados destes
documentos (b)
Para esquemas com granulação grande, índices sobre fragmentos de texto em
geral são definidos, permitindo buscas por palavras-chave em documentos XML. O
desempenho de acesso será bom se o BD implementar uma política de armazenamento
físico contíguo destes fragmentos.
Extensões da SQL para consultas a dados XML geralmente utilizam linguagens
de consulta XML para definir navegações na estrutura hierárquica de documentos. A
Figura 9 (b) mostra um exemplo de consulta na SQL do DB2. Esta consulta realiza uma
busca nos documentos XML (utilizando expressões XPath), recuperando nomes e
códigos de documentos cujo título contém a palavra XML.
A geração de resultados de consultas no formato XML é um requisito importante
para SGBDs que gerenciam dados XML. Esta facilidade é encontrada na linguagem
SQL/XML, um padrão ANSI ISO SQL que define extensões para o tratamento de dados
XML na SQL [SQX03].
A Figura 10 mostra uma consulta na SQL/XML que retorna uma visão XML
(um documento XML) sobre dados de tabelas chamadas Artigos e Autores. O
documento resultante conterá um conjunto de elementos Paper, sendo que cada
elemento possuirá um atributo Title e sub-elementos Conference e
Institution. SQL/XML é utilizada pelo SGBD Oracle.
SELECT XMLElement (“Paper”,
XMLAttributes (“Title”, Ar.Titulo),
XMLElement (“Conference”, Ar. Conferencia),
XMLElement (“Institution”, Au.Instituicao))
as xmldocument
FROM Artigos Ar, Autores Au
WHERE Ar.autor = Au.código
Figura 10. Exemplo de consulta em SQL/XML cujo resultado é um documento XML
Quanto à política de atualização de dados XML em BDs relacionais, em geral
um dado XML em um documento pode ser incluído, excluído ou modificado em um
esquema de mapeamento com granulação média ou pequena, desde que o documento
XML mantenha-se válido. No caso de um mapeamento com granulação grande, apenas
a inclusão ou exclusão de documentos XML é possível.
3.2 Gerenciamento de Dados XML através de BDs XML
Um BD XML é um BD que define um modelo lógico específico para documentos XML,
armazenando e recuperando dados de acordo com este modelo [BOU03,XML2-03,
XDB03]. Um modelo mínimo para dados XML deve conter a definição de elementos,
atributos e conteúdo textual (PCDATA); e manter a ordem dos dados no documento. Um
modelo completo deve ainda oferecer suporte à representação de conteúdo misto e
dados altamente semi-estruturados (com estruturas alternativas e repetitivas). Um BD
XML é recomendado para aplicações que lidam com DODocs (sua natureza fortemente
semi-estruturada torna complexo o mapeamento para um BD relacional), ou aplicações
que lidam somente com dados no formato XML.
A definição de BD XML não impõe nenhuma restrição sobre o modelo de
armazenamento físico a ser adotado. Assim sendo, um BD XML pode ser considerado
tanto um BD que é definido utilizando o suporte de um SGBD qualquer, como um BD
que define um formato proprietário de armazenamento XML (SGBD XML nativo). O
importante é que exista uma visão lógica de dados no formato XML.
3.2.1 Características de Gerenciamento de Dados
Apesar de alguns produtos de BDs XML disponíveis no mercado não serem totalmente
homogêneos em termos de gerenciamento de dados, algumas características já são
consideradas de consenso e, ou são encontradas atualmente nestes produtos, ou são
características que se desejam alcançar no futuro [XML2-03,BOU03]. Estas
características são apresentadas a seguir.
Coleções
Coleção é a noção lógica de um conjunto de documentos. Assemelha-se ao conceito
lógico de diretório em discos rígidos. Documentos com intenções semânticas
semelhantes podem ser mantidos em uma mesma coleção e assim o BD XML pode
manipular estes documentos de forma conjunta. Não há restrições quanto à estrutura de
um documento XML para pertencer a uma dada coleção, ou seja, uma coleção pode
armazenar qualquer documento XML, independente do mesmo ser válido ou não com
relação a um esquema XML. Este relaxamento estrutural permite uma maior
flexibilidade na inclusão de novos documentos no BD, porém incorre em um baixo
nível de integridade dos dados. Para minimizar esta desvantagem, alguns BD XML
permitem a vinculação de um esquema XML a uma coleção, de modo que todos os
documentos devam sofrer parsing para pertencerem à coleção.
Consultas
Pelo menos uma linguagem de consulta para XML deve ser suportada pelo BD. A mais
utilizada é XPath, porém, alguns BDs suportam também dialetos da XQuery e índices
definidos sobre dados em coleções de modo a oferecer um melhor desempenho e
expressividade nas consultas. Uma linguagem de consulta para BDs XML deve
possibilitar desde pesquisas por padrões em textos de documentos até consultas
declarativas (típicas de BDs relacionais) que retornem fragmentos de documentos e
possam gerar novas estruturas XML como resposta. Em função disto, aposta-se na
adoção de XQuery como um padrão a curto prazo para BDs XML.
Atualizações
A capacidade de realizar atualizações de dados em documentos XML ainda é restrita em
BDs XML. Alguns produtos não oferecem este suporte, exigindo que o usuário recupere
um documento XML, modifique-o e o grave novamente no BD. Outros oferecem uma
interface DOM para acesso e modificação do documento XML, enquanto uma terceira
categoria utiliza linguagens proprietárias de atualização de dados, como a XUpdate.
XUpdate é uma iniciativa da XML:DB, um consórcio de empresas responsáveis pelo
desenvolvimento de tecnologias para BDs XML [XDB03]. A linguagem permite a
inclusão e exclusão de elementos, atributos e texto, assim como a alteração de valores
de elementos e atributos. A figura 11 mostra exemplos de atualizações de dados XML
com XUpdate.
<xupdate:append
select=”//autor[nome=´Maria´]/eMail”
child=”last()”>
<xupdate:element name="eMail">
[email protected]
</xupdate:element>
</xupdate:append>
<xupdate:remove
select="/publicacoes/artigo[1]"/>
(b)
(a)
Figura 11. Exemplos de atualizações de dados XML com XUpdate: (a) inclusão e
(b) alteração de dados
Na Figura 11 (a) é incluído um elemento eMail como sub-elemento do
elemento autor de nome Maria. Este novo e-mail é colocado como último elemento
na lista de e-mails de Maria. Na Figura 11 (b), o primeiro elemento artigo do
documento XML é removido.
Apesar de existirem algumas soluções para a atualização de dados, como a
XUpdate, entende-se que estas serão apenas soluções temporárias enquanto não existir
uma linguagem declarativa padrão para a manipulação de dados XML, muito
possivelmente uma extensão de XQuery.
Gerenciamento de Transações
BDs XML suportam controle de concorrência e rollback de transações em caso de
falhas. Bloqueios ocorrem geralmente no nível do documento completo, apesar dos
modelos lógicos de dados XML permitirem o detalhamento de fragmentos de um
documento (elementos e atributos). Isto acarreta um baixo nível de concorrência no
acesso a dados. No futuro, espera-se que bloqueios a nível de fragmentos, ou seja,
bloqueios com granularidade mais fina, sejam permitidos.
APIs
BDs XML oferecem recursos básicos para a comunicação entre aplicações e o BD,
baseados geralmente em interfaces ODBC: métodos para conexão com o BD, execução
de consultas e exploração de resultados. Resultados de consultas são usualmente
retornados na forma de strings XML ou árvores DOM. Caso múltiplos documentos
sejam retornados, métodos específicos para iteração sobre o conjunto resultante são
ativados (semelhante à noção de cursores em BDs relacionais). Adicionalmente, alguns
BDs podem ser acessados através de browsers Web via protocolo HTTP. Uma tendência
em termos de padrão é a API para BDs XML proposta pelo consórcio XML:DB
[XDB03].
Round-Tripping
Round-Tripping é a capacidade de armazenar um documento XML em um BD XML e
obter o documento de volta com o seu conteúdo na íntegra, ou seja, na seqüência textual
estrita em que foi definido. Tal capacidade é particularmente importante para DCDocs,
que possuem estruturas mais irregulares, ricas em seqüências de textos narrativos que
devem ser respeitadas. Na sua totalidade, BDs XML são capazes de realizar roundtripping de documentos XML a nível de elementos, atributos e conteúdos PCDATA. Já
no que diz respeito a DCDocs, a precisão do round-tripping varia de BD para BD e está
intimamente associada ao nível de detalhamento do modelo lógico para o qual o
documento XML é mapeado. Quanto mais sucinto for este modelo, menor será a
precisão do round-tripping.
Armazenamento de Entidades Externas
Um aspecto de gerenciamento particular a dados XML é o tratamento de referências a
entidades externas presentes em documentos XML. A questão é: (i) deve-se buscar os
valores destas entidades e armazená-las no BD ou (ii) manter apenas as referências a
elas? Este aspecto não é em geral considerado pelos BDs XML, porém, idealmente,
ambas as alternativas deveriam ser suportadas, dependendo da intenção da aplicação e
do conteúdo da referência. A alternativa (i) é relevante quando os dados referenciados
complementam os dados presentes no documento XML. Já a alternativa (ii) pode ser
considerada, por exemplo, para casos em que uma referência indica um programa (em
CGI, por exemplo) que faz algum processamento com os dados do documento.
Redundância de Dados
No projeto de um BD relacional, o objetivo de um processo de normalização é evitar a
redundância de dados nas tabelas do esquema do BD. Redundância de dados ocorre com
freqüência em documentos XML, uma vez que um mesmo sub-elemento pode ocorrer
várias vezes como filho de elementos diferentes. Apesar disto, nem sempre é desejado o
armazenamento separado e não-redundante de sub-elementos por questões de
desempenho, principalmente quando se trata da recuperação completa de um documento
XML. Um armazenamento extremamente fragmentado do documento exigiria muitas
junções para recriar o documento completo. Em geral, a aplicação da teoria da
normalização é relaxada nos BDs XML em detrimento de um melhor desempenho de
acesso.
Integridade Referencial
A integridade referencial em um BD relacional refere-se ao controle de referências
válidas através de chaves estrangeiras. No caso de um BD XML, referências entre dados
XML também são possíveis, seja através de atributos ID/IDREF(S) ou key/keyref
(permitem referências entre elementos dentro de um mesmo documento); ou através de
links internos ou externos ao documento. O controle de integridade referencial neste
contexto é bem mais complexo, pois referências externas podem indicar qualquer
documento XML presente no BD ou mesmo na Web! Devido a alta complexidade para
realizar este gerenciamento, BDs XML se limitam ao controle de integridade referencial
apenas a nível interno do documento ou, no máximo, entre documentos mantidos dentro
de um mesmo BD.
Restrições Gerais de Integridade
O controle de integridade semântica em BDs relacionais é amplo e considera não apenas
restrições a nível de tipo de dado de um atributo, mas também a nível de valores
permitidos para um atributo e transições de valor válidas. Tais controles são possíveis
através de diversos recursos da SQL, como gatilhos (triggers), a cláusula check e
procedimentos armazenados (stored procedures). No que se refere a BDs XML,
recursos semelhantes em geral não existem, limitando bastante o nível de integridade
dos dados. Apenas controles básicos em geral são suportados, como o tipo de dado
associado ao conteúdo de um elemento ou atributo, valores default ou enumeração de
valores permitidos. Esta limitação em termos de integridade está também associada à
inexistência de um padrão da W3C para especificação de restrições de integridade em
esquemas XML. Mesmo assim, espera-se futuramente que um controle de integridade
mais robusto esteja disponível em BDs XML.
3.2.2 Projeto de um BD XML
O projeto tradicional de BD é composto de quatro etapas: (i) coleta de requisitos de
dados do domínio da aplicação; (ii) modelagem conceitual do domínio; (iii)
mapeamento do esquema conceitual para o esquema lógico do BD; e (iv) implementação
do esquema lógico no SGBD escolhido. Esta metodologia de projeto pode ser aplicada a
um BD XML toda vez que uma aplicação deseja manipular dados persistentes no
formato XML. Esta metodologia é particularmente relevante para aplicações que lidam
com DODs, cujos esquemas são mais estruturados.
Uma alternativa para a realização do projeto de um BD XML é utilizar um
modelo conceitual tradicional de BD (como o modelo Entidade-Relacionamento
[BAT92]) na etapa (ii) e realizar a conversão do esquema conceitual para um esquema
lógico na forma de grafo orientado, que é mais adequado ao formato de um esquema
lógico para XML. A Figura 12 ilustra um exemplo de projeto para o domínio de
publicações de artigos científicos: modelagem ER (a); modelagem lógica na forma de
grafo (b); e o esquema XML final (c).
Publicações
versão
título
(1,N)
Artigos
nome
ordem
autoria
eMail (0,1)
(1,N)
(1,N)
versão
Autores
(1,1)
(1,1)
Artigos
(0,N)
(1,N)
(1,1)
composição
título
(0,N)
Seções
Autores
nome texto
ordem
Seções
(1,1)
(1,1)
(1,1)
(1,1)
(0,1)
nome
texto
eMail
(a)
(b)
<!ELEMENT publicacoes (artigo+)>
<!ELEMENT artigo (autor+, secao*)>
<!ATTLIST artigo titulo CDATA REQUIRED versao CDATA REQUIRED>
<!ELEMENT autor EMPTY>
<!ATTLIST autor nome CDATA REQUIRED eMail CDATA>
<!ELEMENT secao (#PCDATA)>
<!ATTLIST secao nome CDATA REQUIRED>
(c)
Figura 12. Exemplo de projeto de um BD XML: modelagem conceitual (a),
modelagem lógica (b) e esquema XML correspondente (c)
O mapeamento conceituallógico deve levar em conta algumas particularidades
da modelagem de dados XML:

definição do nodo raiz: este nodo serve apenas para conter o conjunto de
dados XML e geralmente não tem relevância do ponto de vista da
semântica da aplicação. Ele pode ter relação com a entidade central da
modelagem (por exemplo, artigo), – neste caso, ele poderia se chamar
artigos – ou corresponder a intenção do domínio como um todo (que é
publicação de artigos científicos), chamando-se assim publicações;

indicação de nodos léxicos e não-léxicos e seus relacionamentos: nodos
léxicos são nodos que modelam conteúdos de dados, correspondendo a
atributos de entidades no nível conceitual. Eles são indicados por círculos
tracejados. Nodos não-léxicos representam entidades e são indicados por
círculos contínuos (ver Figura 12(b)). As arestas entre nodos representam
relacionamentos entre entidades e possuem rótulos que indicam as
restrições de cardinalidade. A orientação das arestas deve levar em conta
a hierarquia desejada para os futuros dados XML. Deve-se eleger um
nodo não-léxico central (corresponde à entidade central da modelagem –
no caso, artigo) e partir dele definir o restante das orientações
hierárquicas. Este nodo central será filho do nodo raiz.
A etapa final do projeto realiza o mapeamento do esquema lógico para um
esquema DTD ou XSD. Neste processo, duas abordagens podem ser seguidas:

abordagem orientada a atributos: define nodos léxicos como atributos
de elementos. A principal vantagem desta abordagem é a economia de
espaço do documento XML, pois as tags de elementos PCDATA ocupam
muito espaço. Esta abordagem é predominantemente utilizada no
exemplo da Figura 12 (ver Figura 12(c)). Além disso, algumas restrições
de integridade, como valor default e enumeração de valores permitidos
só podem ser definidos sobre atributos XML;

abordagem orientada a elementos: define nodos léxicos como elementos
PCDATA. Esta abordagem é recomendada para conteúdos de dados
extensos (como o texto de uma seção) e deve ser utilizada para
representar elementos mistos (nestes casos, o conteúdo textual do
elemento deve ser um componente PCDATA e não um atributo).
Vale ressaltar ainda que o mapeamento do nodo léxico ordem (indica a ordem
dos autores do artigo) foi substituído no esquema XML pela ordem hierárquica implícita
dos sub-elementos autor dentro do elemento artigo. Uma outra alternativa seria modelalo como um atributo ou sub-elemento PCDATA do elemento autor.
3.2.3 Exemplo de BD XML: Tamino
O SGBD Tamino foi o primeiro servidor de BD para dados XML. Ele começou a ser
desenvolvido pela empresa Software AG no final da década de 90 e é considerado o BD
XML mais maduro existente no mercado, sendo comercializado atualmente na versão
4.1.4 [TAM03].
Tamino permite o armazenamento e a manipulação de documentos XML no
formato nativo ou no formato relacional. No formato nativo, é possível armazenar
documentos que tenham ou não um esquema XML associado. Ele suporta a definição de
coleções, sendo que cada coleção pode estar associada a um esquema XML para fins de
validação de documentos. Tamino define esquemas XML em um formato proprietário,
porém este formato pode ser convertido para XSD. Elementos ou atributos de um
esquema podem ser indexados e existe o suporte de tipos de dados para elementos com
conteúdo ou atributos.
Tamino também gerencia dados relacionais, permitindo a definição de esquemas
de mapeamento de dados XML para tabelas e vice-versa. Através destes esquemas é
possível realizar junções entre dados de documentos diferentes. Consultas a dados
relacionais são formuladas via SQL, enquanto que consultas a dados XML podem ser
formuladas através de linguagens que são extensões das linguagens XPath ou XQuery.
Buscas por padrões em documentos completos também são possíveis. A linguagem
XQuery do Tamino possibilita a atualização de dados de documentos.
Diversos controles funcionais de um SGBD são encontrados no Tamino:
gerenciamento de transações (controle de concorrência e rollback), níveis de autorização
de acesso, processamento otimizado de consultas e ferramentas para administração de
BD. Em termos de acesso, basicamente existem APIs DOM para Java, Jscript e
ActiveX, APIs para acesso SQL através de ODBC e JDBC ou ainda embutimento na
linguagem C. Tamino pode ser acessado diretamente através de um browser Web, via
protocolo HTTP.
4. Conclusão
O amplo uso de XML como um formato de representação e transferência de dados entre
computadores justifica as pesquisas atuais da comunidade de banco de dados nesta área.
O gerenciamento de dados XML vem sendo realizado basicamente de duas maneiras:
através de mecanismos implementados em SGBDs existentes no mercado ou através do
desenvolvimento de SGBDs XML nativos. Neste contexto, uma questão a levantar é por
que investir no desenvolvimento de BDs XML nativos se já existe a tecnologia de
SGBDs e esta tecnologia está oferecendo soluções para o suporte a dados XML. Alguns
argumentos a favor de BDs XML nativos são os seguintes:

Dados XML, principalmente dados presentes em DODocs, apresentam
estruturas muito irregulares, tornando complexo o armazenamento e o
gerenciamento através de um BD relacional, por exemplo. Um BD XML
nativo já é projetado para lidar com dados semi-estruturados de forma
eficiente;

Certas aplicações para a Web (no domínio de comércio eletrônico, por
exemplo) podem ter regras de negócio que ainda não estão totalmente
definidas, gerando freqüentemente páginas dinâmicas conforme a
natureza da negociação feita com o cliente. Tais aplicações podem não
querer investir no projeto de um BD com estrutura mais estática,
preferindo armazenar as transações personalizadas de negócio em
documentos XML com formatações mais flexíveis;

O custo da extensão de um BD convencional para permitir o suporte a
dados XML tende a ser maior do que o custo para desenvolver um BD
XML nativo, considerando as diversas ferramentas já existentes para a
tecnologia XML (processadores XPath e XSL, parsers para DTD e para
DOM, etc). Este fator custo pode fazer a diferença no momento em que
um cliente que deseja adquirir um BD com suporte para XML;

Aplicações que manipulam dados exclusivamente no formato XML
podem não ter interesse em adquirir, por exemplo, um BD relacional com
suporte a XML e ter que lidar com um modelo e uma linguagem de
manipulação que não são adequados a dados XML. Um BD relacional,
por exemplo, pode não ser capaz de recuperar a estrutura física completa
de um documento e executar consultas e transações sobre um documento
como um todo;
O quão relevantes são estas argumentações depende muito das necessidades de
cada aplicação e é necessário mais tempo para avaliar se os BDs XML irão conquistar
ou não uma fatia no mercado de produtos de BD (uma lista de SGBDs para XML pode
ser encontrada em [BOU03]). Independente disto, os BDs XML não têm a intenção de
marcar histórica como uma nova geração de SGBDs, uma vez que BDs relacionais
continuam sendo adequados a aplicações que lidam com dados estruturados.
Referências
[ABI00] ABITEBOUL, S., BUNEMAN, P., SUCIU, D. Data on the Web: From Relations to
Semistructured Data and XML. Morgan Kaufmann, 2000.
[BAT92] BATINI, C., CERI, S., NAVATHE, S.B. Conceptual Database Design: An Entity-Relationship
Approach. Benjamin/Cummings Publishing Company, 1992.
[BOU03]
BOURRET,
R.
XML
and
Databases.
Disponível
em:
http://www.rpbourret.com/xml/XMLAndDatabases.htm. Último acesso: outubro de 2003.
[BRA02] BRADLEY, N. The XML Companion. 3a ed. Addison-Wesley, 2002.
[CXM03] CXML.org. Disponível em: http://www.cxml.org. Último acesso: outubro de 2003.
[DBL03] DBLP Bibliography. Disponível em: http://www.informatik.uni-trier.de/ley/db. Último acesso:
outubro de 2003.
[DOM03] W3C DOCUMENT OBJECT MODEL. Disponível em: http://www.w3c.org/DOM. Último
acesso em: outubro de 2003.
[EBi03] EBisXML. Disponível em: http://www.basda.org. Último acesso: outubro de 2003.
[FLO99] FLORESCU, D., KOSSMANN, D. Storing and Querying XML Data Using an RDMBS. IEEE
Data Engineering Bulletin, 22(3), p.27-34, 1999.
[GRA03] GRAVES, M. Projeto de Banco de Dados com XML. Makron Books, 2003.
[SQX03] SQL/XML. Disponível em: http://otn.oracle.com/tech/xml/xmldb/htdocs/sql_xml.html. Último
acesso em: outubro de 2003.
[TAM03] TAMINO XML SERVER. Disponível em: http://www.softwareag.com/tamino. Último acesso
em: outubro de 2003.
[XDB03] XML:DB INITIATIVE: ENTERPRISE TECHNOLOGIES FOR XML DATABASES.
Disponível em: http://www.xmldb.org. Último acesso em: outubro de 2003.
[XML03] eXtensible Markup Language. Disponível em: http://www.w3c.org/xml. Último acesso em:
outubro de 2003.
[XML2-03] XML.COM: INTRODUCTION TO NATIVE XML DATABASES. Disponível em:
http://www.xml.com/lpt/a/2001/10/31/nativexmldb.html. Último acesso em: outubro de 2003.
[XPA03] XML PATH LANGUAGE (XPATH). Disponível em: http://www.w3c.org/TR/xpath. Último
acesso em: outubro de 2003.
[XQU03] W3C XML QUERY. Disponível em: http://www.w3c.org/xml/Query. Último acesso em:
outubro de 2003.
[XSC03] W3C XML SCHEMA. Disponível em: http://www.w3c.org/xml/Schema. Último acesso em:
outubro de 2003.
[XSL03] THE EXTENSIBLE STYLESHEET LANGUAGE FAMILY (XSL). Disponível em:
http://www.w3c.org/Style/XSL. Último acesso em: outubro de 2003.
Download