XML, Schemas e validações - Implemente um parser XML com .NET
Neste artigo iremos aprender uma maneira de validar documentos XML a partir de um vocabulário XML criando um parser de validação utilizando a tecnologia .NET que contém muitos recursos para manipulação de documentos XML.
XML, Schemas e validações
Implemente um parser XML com .NET
Soluções para integração de sistemas passam atualmente pela tecnologia XML (EXtensible Markup Language), pois, o formato de um documento XML expressa de uma maneira simples e padrão a delimitação das informações do documento, facilitando, assim, a transmissão e o processamento dos dados nele inseridos e ainda propondo a integração com tecnologias não proprietárias. O XML permite agregar semântica ao conteúdo dos documentos, deixando por conta de cada aplicação a interpretação da marcação atribuída a este conteúdo. Esta abordagem amplia significativamente as possibilidades do uso das linguagens de marcação, entre elas a capacidade de definir metadados – dados que descrevem dados.
Além da maneira simples de representar as informações do ambiente, o XML ainda tem um mecanismo prático de descrever os dados no documento, isto é, um documento XML além de carregar os dados em si, leva em conjunto a descrição desses dados. Esta característica faz de uma aplicação XML um ótimo meio de compartilhar as informações com outras aplicações via Internet.
Através da natureza autodescritiva do XML, aplicações que rodem na ponta de um ambiente distribuído podem fazer a renderização visual de dados marcados em XML sem um conhecimento prévio das informações contidas nesse documento.
Para que haja segurança na integridade das informações trocadas, faz<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />-se necessário haver um mecanismo de validação que permita que todos os pares participantes do ambiente, consigam, por meio de software, verificar se o conteúdo dos documentos segue regras pré-definidas. Essas ferramentas analisadoras são chamadas de parsers e são responsáveis por verificar se um documento obedece à sintaxe do XML e identificar se um documento está de acordo com as regras definidas por um vocabulário XML.
Manipulação de Documentos XML
Ainda que um documento XML seja baseado e legível por pessoas, é necessário haver uma maneira de programavelmente ler e alterar o conteúdo XML. Este é o trabalho de um parser XML de manipulação. Estes parsers utilizam API's XML, existem dois tipos de API's para manipulação de documentos XML: tree-based e event-based.
A W3C mantém (atualmente) dois padrões para manipulação de documentos XML sendo eles, o DOM (Document Object Model) e o SAX (Simple API for XML).
O DOM é baseado no modelo tree-based, ou seja, oferece uma visão de documento estruturado em árvore. Uma aplicação parser, desenvolvida para acessar um documento XML por meio do DOM, carrega todo o documento para a memória e tem à disposição uma visão de todos os objetos na memória como numa árvore.
As principais estruturas das entidades do documento são nós na árvore objeto. Acessar esses nós e manipulá-los é uma questão de navegar na árvore usando as interfaces DOM.
Quando o documento a ser analisado é muito extenso, carregá-lo todo na memória pode sobrecarregar os recursos do computador; seria mais interessante ir carregando partes do documento conforme a necessidade. Para este cenário utilizar o SAX seria mais interessante, pois fornece este tipo de acesso a documentos XML.
O SAX é um estilo de interface bem diferente do DOM. Com o DOM, a aplicação pergunta o que está no documento ao seguir a referência do objeto na memória; com o SAX, que é baseado no modelo event-based, o analisador diz à aplicação o que está no documento ao notificar a aplicação de um fluxo de eventos analisadores.
De qualquer maneira, aplicações tanto servidoras quanto clientes, vão fazer uso das interfaces do DOM ou do SAX para manipular e gerar documentos XML.
Validação de Documentos XML
As regras de sintaxe do XML são fundamentais para qualquer sistema baseado nessa tecnologia. Essas regras foram estabelecidas pela Recomendação XML 1.0 do W3C CONSORTIUM, e um documento que obedece a essas regras é chamado de XML bem-formado.
Um documento pode ser bem-formado, mas ser inválido, elementos do documento XML devem estar de acordo com as regras especificadas no esquema ou vocabulário XML correspondente.
Para criar um vocabulário XML específico para uma aplicação, devemos especificar as regras através das quais os documentos XML são escritos. Como qualquer desenvolvedor pode utilizar o XML para criar seu próprio vocabulário de marcação, devemos criar um mecanismo de conferência que defina as regras de um documento XML. Este mecanismo pode ser definido por meio de DTD (Definition Type Document) ou XML Schema, que contém as regras que um desenvolvedor definiu para descrever um vocabulário de um sistema específico. No exemplo que iremos desenvolver, utilizaremos um XML Schema para validar documentos XML.
Um XML Schema expressa vocabulários compartilhados e permitem que softwares possam validar documentos XML por meio de regras definidas por desenvolvedores. Um XML Schema provê significados para definição da estrutura, conteúdo e semântica de documentos XML.
Ferramentas analisadoras que são responsáveis por verificar se um documento obedece às regras de sintaxe do XML e identificar se um documento é válido são chamadas Parsers XML de Validação. A Figura 1 mostra um mecanismo de validação num ambiente distribuído de geração e recebimento documentos XML que garante a integridade das informações geradas e recebidas.
Figura 1. Arquitetura de Validação de Documentos XML
Tanto a aplicação que gera quanto a que recebe o conteúdo XML utiliza-se do parser de validação para homologar as informações de acordo com um vocabulário pré-definido contido num XML Schema.