XML: O documento é válido?

Introdução

No artigo anterior foi iniciada a apresentação da XML, durante o artigo foi possível conhecer um pouco da história e entender o que é um documento XML bem formatado. Neste artigo você será levado a entender o que é um documento XML válido e qual a diferença entre um DTD (Document Type Definition – Definição de Tipos de Documento) e um XML Schema (Esquema XML).

Critério de validação

O critério de validação é mais rigoroso, segundo [DATE] um documento XML só é válido “se e somente se ele estiver bem formatado e estiver de acordo com alguma DTD especificada”, e [ELMASRI] complementa afirmando que a validação pode ser efetuada usando tanto um arquivo DTD quanto um arquivo XML Schema.

XML_DTD_XSD

O documento XML

Na sequência é mostrado o documento XML que foi apresentado e explicado no artigo anterior. Ele será usado neste artigo para expor a utilização do critério de validação baseado tanto num arquivo DTD quanto num arquivo XML Schema.

DTD (Document Type Definition – Definição de Tipos de Documentos)

Um arquivo DTD estabelece as regras que definem a composição de um documento XML. Num arquivo DTD é possível definir (i) quais elemento e atributos um documento XML deve ter, (ii) que tipo de relacionamento um elemento tem com outro, (iii) quais partes do documento XML são obrigatórias ou opcionais, etc. O arquivo DTD pode ser criado separado do documento XML, ou fazer parte do mesmo.

Um arquivo DTD que pode ser usado para validar o exemplo do documento XML apresentado no artigo anterior é mostrado na sequência.

Este arquivo DTD declara que para um documento XML ser válido, ele precisa ter um elemento raiz chamado aluno. Esse elemento raiz deve ter obrigatoriamente um elemento nome e opcionalmente o elemento idade. O elemento aluno possui o atributo situacao, onde os valores possíveis para esse atributo são Matriculado e Não Matriculado, caso o atributo não seja declarado, o valor padrão que deve ser assumido é Matriculado.

Segundo [ELMASRI] o DTD é “adequado para especificar estruturas de árvores com elementos obrigatórios, opcionais e repetitivos”, mas ele possui limitações tais como:

  • Não utiliza a sintaxe XML, obrigando a criação de um analisador diferente para o seu processamento.
  • Os tipos de dados não são genéricos.
  • Força a ordem especifica para os elementos no documento, onde elementos fora de ordem não são permitidos.

XML Schema (Esquema XML)

Para resolver as limitações apresentadas pelo DTD foi proposta a padronização XML Schema. Uma desvantagem da padronização XML Schema apresentada por [DATE] é que eles “são consideravelmente mais complexos do que uma simples DTD“. Mas, de uma maneira geral, o XML Schema proporciona mais vantagens que desvantagens, algumas das vantagens do XML Schema em relação ao DTD são:

  • XML Schema por si só é um documento XML.
  • XML Schema admite tipos mais sofisticados.
  • XML Schema oferece um meio simples para especificar que a ordem dos elementos não importa.

Um equivalente em XML Schema do arquivo DTD apresentado anteriormente pode ser visto no exemplo abaixo:

Explicando o XML Schema

No exemplo o <xsd:schema> é o elemento raiz do XML Schema. A declaração xmlns:xsd=”http://www.w3.org/2001/XMLSchema” indica que os elementos e tipos de dados usados no XML Schema vêm do namespace “http://www.w3.org/2001/XMLSchema”; também informa que todos os elementos e tipos desse namespace devem ter o prefixo xsd.

O elemento aluno é do tipo complexo (ou composto), isso quer dizer que ele pode conter valores, elementos ou valores e elementos. O elemento nome é um elemento simples, ou seja, só pode conter valores, além disso os valores tem que ser do tipo xsd:string (alfanumérico).

O elemento idade também é um elemento simples, mas neste caso ele só aceita valores do tipo xsd:integer (inteiro), podendo ter no mínimo 0 (zero) ocorrência (minOccurs=”0″) e no máximo 1 (uma) ocorrência (maxOccurs=”1″).

O elemento aluno também têm o atributos situacao do tipo tpSituacao com valor Matriculado como padrão. Mas como é possível perceber que o tipo tpSituacao não está declarado como pertencente ao namespace informado na linha 2 (dois). Esse tipo na realidade é um elemento simples que tem o início da sua definição na linha 12 (doze). Ele é do tipo xsd:string e os seus valores são restringidos a um conjunto enumerado, no caso Matriculado e Não Matriculado.

Conclusão

O artigo anterior mostrou as principais características de um documento XML. Já este artigo o levou a entender como as regras de validação de um documento XML são criados,  sendo mostrada a diferença entre um arquivo DTD e um arquivo XML Schema. No próximo artigo será abordado características que podem ser usadas no XML Schema.

Até o próximo artigo.

Bibliografias Citadas

[DATE] DATE, C.J. Introdução a Sistemas de Banco de Dados. 8 ed. Rio de Janeiro: Elsevier, 2003.

[ELMASRI] ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 4 ed. São Paulo: Pearson Addison Wesley, 2005.

Assuntos relacionados:

XML: Solução para interoperabilidade?

XML: Como assim XSD?

XML: Mais sobre XSD

Possui mestrado em Computação Aplicada pela Universidade Estadual do Ceará (2010), especialização em Engenharia de Software pela Faculdade de Juazeiro do Norte (2010), graduação em Automática pelo Centro Federal de Educação Tecnológica do Ceará (2005). Tem experiência na área de Ciência da Computação , com ênfase em Sistemas de Computação, atuando principalmente nos seguintes temas: Desenvolvimento dos programas de computador IndSist, Store, Teacher entre outros. Desenvolvimento dos programas Mobile-Android Agenda Iterativa e Guia Cariris.Disciplinas que ministra ou ministrou no ensino superior: Linguagem de Programação, Paradigma de Programação, Estrutura de Dados, Engenharia de Software, Banco de Dados. Currículo Lattes