A internet está em constante expansão a cada dia que passa, é cada vez maior o número de dispositivos que possibilitam o acesso a internet. O comércio eletrônico é um dos que mais impulsionam o crescimento. Portanto, o gerenciamento das informações é um desafio para o mundo de banco de dados e para auxiliar a estruturação e troca de dados na internet, foi desenvolvido a XML, que possui o objetivo de fornecer informação sobre a estrutura e o significado dos dados nas páginas web. Porém, faz-se necessário a utilização de abordagens para definição de estruturas. Este trabalho objetiva descrever uma das abordagens, o XML Schema.

Introdução

Flexibilidade e portabilidade são características que vêm fazendo com que, nos últimos anos, a eXtensible Markup Language (XML) seja aceita como um padrão para representação, intercâmbio e manipulação de dados em aplicações para as mais diversas áreas de negócios [2]. Representação de dados em aplicações de gerenciamento de conteúdo, aplicações de transações bancárias e de publicação de conteúdo em intranets são alguns exemplos de uso da XML. O crescimento na utilização da XML levou a um aumento significativo no volume de dados que são armazenados, transportados e recuperados nesse formato por aplicações no mundo todo.

A XML (Extensible Markup Language) tem demonstrado uma linguagem bastante adequada para representação e troca de dados e se estabelecendo como um padrão para representação de dados semi-estruturados. O armazenamento e acesso a estes dados pode ser facilitado quando se tem disponível uma estrutura que descreve estes dados. Processadores de consulta normalmente definem sua rota de acesso na recuperação dos dados baseados na estrutura que descreve estes dados.

Documentos XML podem ser legitimados contra estruturas específicas. Estas estruturas devem prever quais elementos são encontrados nos documentos, a ordem em que estes elementos podem aparcer, a hierarquização destes elementos, o tipo de dados do conteúdo destes elementos, entre outros. Determinadas abordaganes para definição de estruturas para documentos XML são o DTD (Document Type Definition) e o XML Schema que é uma alternativa do DTD.

O objetivo deste artigo é descrever os recursos da aborgadem XML Schema, mostrandos as vantagens e as definições.

Conceitos básicos sobre banco de dados semi-estruturados são apresentados na seção 2. Na seção 3 são abordados conceitos sobre XML. Na seção 4 são apresentadas as características da XML Schema.

Bancos Dados semi-estruturados

Dados armazenados em SGBDR’s (Sistemas Gerenciadores de Banco de Dados Relacionais) são considerados dados estruturados. O fator de maior relevância para a afirmação acima está relacionado à sua estrutura, a qual é definida antes do conhecimento dos dados (definição de esquema a priori). Portanto, espera-se pelo menos que os dados sigam um mesmo padrão, diferentemente dos dados semi-estruturados que não seguem. Os dados semi-estruturados, em sua maioria, possuem como características principais uma estrutura irregular, dinâmica e bastante heterogênea. Uma preocupação crescente entre pesquisadores na área de web semântica está relacionada a forma com que os dados da internet estão sendo disponibilizados. A linguagem XML vem se destacando como um mecanismo de fundamental importância e tornando-se a cada dia um padrão para manipulação de dados semi-estruturados.

Segundo, os dados semi-estruturados podem ser representados através de um grafo direcionado, conforme mostrado na Figura 1.

Representando dados semi-estuturados por meio de um grafo
Figura 1. Representando dados semi-estuturados por meio de um grafo.

As características principais de dados semi-estruturados são:

  • Definição à posteriori: os esquemas de dados semi-estruturados são frequentemente definido após a existência dos dados, tomando como base uma análise de suas estruturas particulares e da análise de similaridades e diferenças. Porém, não significa que exite um esquema associado a um dado semi-estruturado.
  • Estrutura irregular: conjunto de dados sematicamente similares estão dispostos de maneiras diferentes, podendo algumas ocorrências terem informações incompletas ou adicionais em relação a outras. Um exemplo bem comum é o curriculum vitae, que possui informações particulares para cada pessoa, não seguindo um padrão.
  • Estrutura implícita: na maioria das vezes existe uma estrutura básica pré-definida para os dados, porém, essa estrutura está implícita na forma como os dados são apresentados. Se faz necessário realizar uma computação para obter essa estrutura.
  • Estrutura extensa: a ordem de magnitude de uma estrutura para estes dados é grande, uma vez que os mesmos são muito heterogêneos. Supondo diferentes formatos para um curriculum vitae, uma união de atributos significativos em cada formato pode produzir um esquema extenso;
  • Estrutura evolucionária: a estutura de dados está em constate mudança de seus valores. Dados da Web apresentam este tipo de comportamento, uma vez que existe o interesse em manter dados sempre atualizados. Um exemplo é um portal de notícias, que possui informações atualizadas constantemente.
  • Distinção entre estrutura e dados não é clara: como a estrutura está embutida na descrição dos dados, muitas vezes a distinção lógica entre estrutura e valor não é clara. Pode-se ter, por exemplo, um endereço representado como um valor atômico em uma ocorrência de dado (string) ou como um tipo definido pelo usuário (com atributos rua, número e complemento) em outra ocorrência. Esta característica torna mais complicado o projeto de um BD para tais dados.

As características de dados semi-estruturados diferem bastante das características de dados mantidos em BDs tradicionais, como BDs relacionais. A tabela 1 apresenta estas diferenças.

Dados tradicionais Dados semi-estruturados
Esquema predefinido Nem sempre há um esquema predefinido
Estrutura regular Estrutura irregular
Estrutura independente dos dados Estrutura embutida no dado
Estrutura reduzida Estrutura extensa
Estrutura fracamente evolutiva Estrutura fortemente evolutiva
Estrutura prescritiva Estrutura descritiva
Distinção entre estrutura e dado é clara Distinção entre estrutura e dado não é clara
Tabela 1. Diferenças entre dados tradicionais e dados semi-estruturados.

XML – eXtensible Markup Language

A XML possui sua origem na SGML (Standard Generalized Markup Language), um padrão especificado pela ISO 8879 em 1986, mais poderoso para criação de linguagens que a própria XML. O fator de maior relevância que levaram desenvolvedores a pesquisarem e criarem novas linguagens mais leves, simples e que fossem utilizadas na web foi a complexidade que envolve a utilização da SGML. Entretanto, SGML ainda tem sido bastante utilizada por grandes empresas que buscam desenvolver alternativas satisfatórias que possam auxiliar na realização de diferentes funções.

XML é uma sigla que representa eXtensible Markup Language - linguagem de marcação extensível. Diferentemente da maioria das linguagens de marcação, inclusive a própria HTML (HyperText Markup Language – linguagem de marcação de hipertexto), XML não apresenta um conjunto limitado de tags a serem utilizadas. Sua característica flexível permite a seus usuários a definição de suas próprias tags e a criação de suas próprias linguagens de marcação. Para a definição de um conjunto de tags, XML oferece uma estrutura padrão que possibilita ao usuário a criação de sua própria estrutura ou a utilização de outras estruturas já definidas. Uma considerável vantagem da utilização da XML para criação de novas linguagens é o fato que todas as linguagens baseadas na XML compartilham uma sintaxe básica comum (RDF, OWL, XML Schema, MML). O código abaixo representa um documento XML:

A XML vem se tornando o principal padrão para respresentação de dados que não possuem uma estrutura bem definida. Essa linguagem também pode ser utilizada para representação e troca de documentos e informações entre sistemas e aplicações diferentes, como exemplo, podemos citar uma aplicação de uma faculdade que obtem de uma instituição financeira, um documento XML contendo quais os alunos realizaram o pagamento em um determinado período, dando segurança ao banco na sua transação e flexibilidade para o uso da informação na faculdade, portanto, é um elo comum de entendimento entre ambos.

XML Schema

Uma vez que o XML permite o compartilhamento da informação independente do tipo de aplicação usada para visualizar, é necessário identificar a estrutura do documento XML em questão.

Portanto, a XML Schema Definition foi lançada em 1999 publicamente como “working draft” no site da W3C e definitivamente recomendada em novembro de 2000, como linguagem oficial de definição de esquemas para documentos XML.

O objetivo de um XML Schema é definir os blocos de construção permitidos em um documento XML. Um XML Schema:

  • define elementos que podem aparecer em um documento
  • define atributos que podem aparecer em um documento
  • define que elementos são elementos filhos
  • define a ordem dos elementos filhos
  • define o número de elementos filhos
  • define se um elemento é vazio ou pode incluir texto
  • define tipos de dados para elementos e atributos
  • define valores padrão e fixos para elementos e atributos

Ou seja, A XML Schema permiti definir através de regras, a estrutura, o conteúdo e a semântica de um documento.

A especificação de XML Schema assume que pelo menos dois documentos são utilizados: um documento instância e pelo menos um documento esquema. O documento instância contém a informação propriamente dita e o documento esquema descreve a estrutura e o tipo do documento instância. Fazendo uma analogia com orientação a objetos, a distinção entre instância e esquema é semelhante a distinção entre objeto e classe em ortientação a objetos, onde uma classe descreve um objeto assim como um esquema descre um documento instância.

Vantagens do XML Schema

A linguagem XML Schema foi desenvolvida com o objetivo de tornar uma linguagem apropriada para sua utilização na definição de esquemas para documentos XML. As vantagens da utilização da linguagem XML Schema para definição de esquemas para documentos XML são percebida durante o desenvolvimento, onde se detecta que XML schema possui uma rica hierarquia de tipo de dados, possui um maior controle sobre o número de ocorrências de um determinado elemento, possibilita a reutilização de código e possui uma maior compatibilidade com banco de dados relacionais.

As principais vantagens do XML Schema são:

  • XML Schemas são extensíveis para adições futuras;
  • XML Schemas são mais ricos e úteis que DTDs;
  • XML Schemas são escritos em XML;
  • XML Schemas suportam tipos de dados;
  • XML Schemas suportam namespaces.

Sintaxe Básica

Uma especificação em XML Schema sempre inicia com a tag <schema> e termina com a tag </schema>. Todas as declarações de elementos, atributos e tipos devem ser inseridas entre estas duas tags. Em XML Schema, o modelo de conteúdo de um elemento pode ser especificado a partir da declaração de um tipo. Um tipo pode ser Simples ou Complexo. Um tipo simples pode ser atribuído a um atributo ou a um elemento simples, que possui somente texto e não possui elementos filhos. Já um tipo complexo é utilizado para dizer quais são os subelementos permitidos para um determinado elemento. Tipos simples são declarados com simpleType, e tipos complexos com complexType. A declaração element liga um tipo a um nome de elemento. Elementos podem ser declarados dentro de um tipo complexo ou abaixo de schema. Neste último caso, são considerados elementos globais.

Um simpleType pode ser um dos tipos básicos definidos em XML Schema, tais como string, integer, date, entre outros. Uma relação completa dos tipos simples definidos por XML Schema pode ser encontrada.

Um complexType define restrições para o modelo de conteúdo de um determinado elemento, o que é feito através dos atributos para especificação de cardinalidade minOccurs e maxOccurs, e dos delimitadores de grupos de elementos sequence, all e choice. O atributo minOccurs especifica o número mínimo de vezes que um subelemento pode aparecer, e maxOccurs, o número máximo. Os valores destes atributos devem ser inteiros positivos, porém o atributo maxOccurs também permite o valor unbounded. No código XML Schema citado acima, a declaração...


<xs:element name="arvore" maxOccurs="unbounded">

especifica que o elemento ARVORE não possui um limite máximo. A declaração dos atributos minOccurs e maxOccurs não é obrigatória. Quando suprimido, são admitidos os valores 1 (um) para minOccurs e 1 (um) para maxOccurs, respectivamente. Isso faz com que o elemento em questão seja obrigatório.

O grupo sequence indica que os subelementos devem aparecer na instância XML na mesma ordem em que foram declarados no esquema. O grupo choice diz que somente um dos elementos declarados no grupo pode aparecer na instância, e o grupo all estabelece que todos os elementos do grupo podem aparecer uma ou nenhuma vez, e que eles podem aparecer em qualquer ordem.

Além desses tipos de conteúdo para um elemento, existem ainda mais dois. Um elemento pode ser vazio, ou seja, não ter conteúdo algum. Para isso, basta declarar um complexType sem nenhum elemento, e declarar um element daquele tipo. Um elemento pode também ter um conteúdo misto, que mistura texto e subelementos. Isso pode ser expresso através do atributo mixed.

Em XML Schema, atributos são declarados com attribute. Do mesmo modo que uma declaração element liga um tipo simples ou complexo a um nome de elemento em um contexto, uma declaração de atributo liga um tipo simples a um nome de atributo em um contexto.

População, Unicidade, Chaves e Referências

XML Schema permite indicar que o valor de um elemento ou atributo deve ser único em um certo escopo. Para indicar que o valor de um elemento ou atributo particular deve ser único, utiliza-se o elemento unique, selecionando um conjunto de elementos com selector, e depois indica-se que um elemento ou atributo deve ser único dentro do escopo selecionado, através de field. Os elementos selector e Field contêm expressões XPath. Supondo-se que o tipo complexo tAutor tivesse um atributo COD_AUTOR e que ele devesse ser único, sua declaração seria como segue.


<unique name="UnicidadeCodigoAutor">

            <selector>PUBLICACOES/PUBLICACAO/AUTOR</selector>

            <field>@COD_AUTOR</field>

</unique>

O conceito de chave em XML Schema também assegura que um determinado valor deve ser único. A única diferença é que esse valor pode ser referenciado em um outro lugar, permitindo desse modo que o esquema expresse restrições de integridade. Esses dois conceitos são declarados através dos elementos key e keyref, respectivamente, e sua sintaxe é semelhante à declaração de unicidade, embora se utilizem os elementos key e keyref ao invés de unique.

Namespaces

Um esquema especificado em XML Schema pode ser visto como um conjunto de declarações de tipos e elementos cujos nomes pertencem a um namespace. Todo esquema em XML Schema deve definir um único namespace, sendo usual o formato de URL (Uniform Resource Locator) para a sua identificação.

O uso de namespaces aumenta a flexibilidade de XML Schema, permitindo a reutilização de definições feitas em outros esquemas. A utilização de um tipo definido em outro esquema é possível através da sua declaração e da associação de um prefixo a ele. Segue abaixo um exemplo de Namespaces:


ema xmlns:xsd="http://www.w3.org/1999/XMLSchema"

        xmlns:grp="http://meunamespace.com/Arvore"

        targetNamespace="http://meunamespace.com/Arvore">

Conclusões e tendências futuras

Dados semi-estruturados em conjunto com XML é um tema atual de pesquisa na área de BDs, impulsionado pela grande disponibilidade e expansão de dados na Web. A necessidade de representar a estrutura dos dados em XML de forma flexível surgiu a XML Schema.

Este artigo apresentou o XML Schema como uma alternativa bem flexível e bem estruturada para a definição de estrutura, conteúdo e semântica de um documento XML.

Ao analisar as características, nota-se a grande semelhança da definição do XML Schema com a linguagem XML, facilitando para o desenvolvedor e para o leitor, um fácil entendimento. Outra vantagem XML Schema, é que ele permite ser utilizado para a validação de arquivos, possibilitando ao usuário verificar se o seu documento XML está de acordo com as definições descritas no XML Schema. Com essas vantagens, a utilização do XML Schema vem crescendo bastante, dando maior flexibilidade e qualidade nos documentos XML.

Uma melhoria para a utilização do XML Schema, seria o desenvolvimento de uma ferramenta que apartir de um documento XML, gerasse um documento XML Schema, facilitando o desenvolvimento do mesmo.