Tenho feito algumas pesquisas para lidar com dados XML (Extensible Markup Language) sobre VOS e OpenVOS, e pensei que seria útil compartilhar o que aprendi com um público mais amplo.
O QUE É XML?
A seguinte descrição do XML é retirada do "XML": A Beginner's Guide", de Dave Mercer. (Osborne/McGraw Hill, 2001).
"SGML (Standard Generalized Markup Language) é uma norma internacional (ISO 8879) para a definição de métodos de representação de informações, tanto humanos como legíveis por máquina, independentes de dispositivos e independentes do sistema. Linguagens em conformidade com as regras da SGML são chamadas de aplicações, e o HTML é uma aplicação SGML. [...] O HTML não tem provisões para se estender de forma padrão em novas tags, atributos, estruturas de dados ou tipos de conteúdo... O XML, ao invés de ser uma linguagem predefinida como o HTML, é uma forma predefinida de definir novas linguagens, evitando a natureza excessivamente complexa do SGML. Tecnicamente, o XML inclui um subconjunto das capacidades encontradas na SGML".
Um esquema XML é um método para definir um documento XML específico (ou classe de documentos). Ele descreve a estrutura de um documento, incluindo os elementos, atributos, tipos de dados e restrições que podem ser usados, da mesma forma que se definiria um banco de dados.
Uma Definição de Tipo de Documento XML (DTD) realiza um propósito similar a um esquema.
A XML existe há mais de 10 anos, e há uma série de produtos e métodos concorrentes, e há uma série de normas relacionadas. Há também muitos livros comerciais sobre XML. O'Reilly publica um livro chamado "Aprendendo XML" que pode ser de ajuda. Veja www.oreilly.com. O site http://xml.com/, mantido pela O'Reilly, tem uma série de artigos e links úteis.
Os padrões XML são publicados pelo World Wide Web Consortium, que está em http://www.w3.org. As normas são bastante secas, por isso não recomendo tentar lê-las.
O XML se assemelha ao HTML, e tem uma herança semelhante ao HTML, mas é uma codificação de propósito muito mais geral. O HTML descreve como os dados devem ficar quando exibidos em uma página web. O HTML, por si só, não registra se um número representa uma quantidade, um preço ou um número de estoque. O XML, por outro lado, normalmente não se preocupa com a aparência dos dados; ele descreve o que os dados significam. Uma aplicação comum do XML é a criação de uma codificação textual de um banco de dados específico. O XML tem a capacidade de dizer que este campo é um preço numérico, e aquele campo é um número alfanumérico de ação, e assim por diante. Todos os dados em um documento XML são codificados como texto, o que significa que problemas pegajosos como endianness ou representação binária de números de ponto flutuante desaparecem. Assim, o XML está ganhando aceitação como uma boa linguagem para a comunicação de dados de computador para computador.
FERRAMENTAS PARA PROCESSAR XML
Estou ciente de dois pacotes de código aberto de uso comum que processam XML. O primeiro é o Expat e o segundo é o Xerces. Estes dois pacotes foram criados em 1999. Expat foi o trabalho de um indivíduo; Xerces saiu da IBM.
Existem dois modelos concorrentes para lidar com o XML. Um é o Document Object Model (DOM) e o outro é o Simple API for XML (SAX). O método SAX (usado pela Expat) lê um documento XML de forma linear, chamando uma função de manipulador toda vez que ocorre um elemento de marcação. O método DOM lê todo o documento XML e cria uma hierarquia com estrutura de árvore. Você pode pensar no SAX como um método de acesso seqüencial e no DOM como um método de acesso aleatório. Xerces suporta tanto o SAX como o DOM APIs. Há pacotes de terceiros que fornecem um DOM API para expatriação (veja "simkin").
Enquanto usamos o termo "documento XML", na prática, o texto codificado em XML pode ser um arquivo ou um fluxo de dados. Tipicamente, você fornece as funções que coletam o texto e o entregam ao analisador, de modo que ele pode vir de qualquer fonte.
EXPAT
Expat é projetado para ler XML e tomar algumas medidas toda vez que um elemento XML aparece. Eu não vi nenhuma documentação que sugira que ele possa criar fluxos de dados baseados em XML. Expat está escrito em C. Há também uma versão de Xerces para Perl e Java.
Um porto de expatriação para VOS está disponível em:
O site principal para expatriados é:
e
Uma boa introdução à expat pode ser encontrada na página inicial da sourceforge; aqui está o link:
Você pode encontrar links para outros pacotes de código aberto que utilizam expat em http://www.libexpat.org/.
XERCES
Xerces pode tanto ler como escrever fluxos de dados XML. O Xerces é escrito em C++ e é projetado para ser chamado pelos programas C++.
Tom Mallory e eu portamos Xerces versão 2.8.0 para um cliente Stratus em meados de 2008. Nosso objetivo era uma plataforma da Série V. A versão atual do Xerces é a 3.0.1. Se você estiver interessado em obter uma cópia desta porta, por favor entre em contato com a equipe de sua conta.
O site mestre para xerces é:
QUAL USAR?
Se você quiser apenas analisar o documento codificado em XML, e seu processamento for compatível com a leitura seqüencial do fluxo de dados, então recomendo o uso do expat. Enquanto estiver escrito em C, graças ao fato de que todas as linguagens de programação VOS podem chamar funções e sub-rotinas escritas em qualquer outra linguagem de programação, você pode chamar expat a partir de qualquer linguagem VOS.
Se suas exigências incluem a capacidade de realizar operações de acesso aleatório em um documento XML, ou se você deseja criar XML, e se sente à vontade para programar em C++, então eu recomendo o uso de Xerces.
Se você precisar de assistência para adicionar a capacidade de lidar com documentos XML à sua aplicação, contate sua equipe local de conta Stratus.