Validação de documentos XML – Introdução ao XML - Parte V
Este post tem como objetivo mostrar o que é e por qual motivos devemos utilizar a validação de documentos XML.
Até agora, os posts mostraram como construir um documento XML bem formado. Com essas regras, você pode construir o XML que desejar, já que é você quem define suas próprias tags. Apesar de toda a liberdade, ainda falta uma maneira para restringir o vocabulário dos elementos e atributos que configuram um conjunto de documentos. O processo de definir formalmente a linguagem de um XML denomina-se modelagem de documento.
Mas o que é exatamente modelar um documento XML?
Um modelo de documento determina quais documentos XML estão de acordo com a linguagem definida. Um modelo de documento responde algumas perguntas, tais como: “Um contato precisa ter um telefone celular?”, “Um contato pode ter mais de um endereço?”.
Um modelo é um tipo especial de documento, escrito numa sintaxe própria para descrever uma linguagem de XML. Essa “linguagem de XML” também pode ser chamadade tipo de documento. Com esse modelo de documento, é possível dizer se um documento XML está escrito conforme seu tipo de documento. Em outras palavras, um XML válido é um documento XML que segue as regras de formação definidas em seu tipo de documento.
A figura abaixo ilustra essa situação:
Como saber se eu preciso criar um documento que especifica o modelo do meu XML?
- Os documentos XML são escritos por pessoas (ou uma aplicação) e são usados como dados para outros aplicativos. As aplicações são exigentes em relação ao formato dos dados, pois pode ser difícil desenvolver uma aplicação que entenda inúmeras variações de formatos de dados. Quando você restringe, cria uma padrão, escrever um programar= que vai consumir aquele XML fica muito mais fácil e reduz bastante a possibilidade de erros.
- Seu documento XML deve ter alguns campos obrigatórios. Por exemplo, um email precisa ter um destinatário, se não tiver, como você vai enviar a mensagem? Utilizando um documento modelo, você garante que todos os campos obrigatórios estarão presentes no XML, ou seja, você garante a validação.
- Você solicita um XML a pessoas que não estão familiarizadas com a estrutura do XML. Como o modelo é um documento, você pode torná-lo público, e essas pessoas poderão fazer o download. Um modelo de documento XML também pode ser utilizado em editores de XML (serve de guia, pois contém a lista dos elementos apropriados, e que podem ser usados para construir o XML).
Você é quem decide se vai usar um modelo de documento ou não. O XML foi projetado para funcionar das duas maneiras.
E se eu não quiser usar um documento que especifique o conteúdo do meu XML?
Se você decidir não usar um modelo de documento XML, você precisa saber como os elementos e os atributos se comportam:
- Vocabulário ilimitado: você pode utilizar qualquer nome para seus elementos.
- Sem regras de gramática: um elemento pode conter qualquer coisa: conteúdo misto, elementos, texto, ou pode ser vazio.
- Sem restrições aos atributos: qualquer elemento pode conter qualquer atributo.
Existem duas formas de criar esses documentos de definição de conteúdo do XML (linguagem XML):
A primeira forma é utilizando um DTD (Document Type Definition). Um DTD define os elementos que podem aparecer no XML, como este elementos devem estar relacionados e outros detalhes básicos da estrutura de um documento XML. Os DTDs fazem parte da especificação original do XML.
A segunda forma é utilizando um XML Schema. Um schema pode definir todas as estruturas do documento que você pode colocar em um DTD, e também pode definir tipos de dados e outras regras mais complicadas do que um DTD. O W3C desenvolveu a especificação do XML Schema apenas um pouco depois da especificação original do XML.
Conclusão
Um documento XML não válido (sem DTD ou Schema associado) é individualista. Quando um DTD ou Schema são definidos, representam um conjunto de documentos XML que poderão existir. Com apenas um documento não válido, é possível fazer muitas coisas, mas fica muito difícil automatizar os processos sem considerar uma classe de documentos.
Mas se você estiver trabalhando com poucos documentos, e estes não tiverem restrições, você não precisa criar um modelo de documento XML. O seu conjunto é pequeno, e se você parar para especificar o documento, pode perder um tempo precioso.
Tudo depende do ambiente em que o contexto está inserido. Você é quem decide se deve usar a validação.