Como Validar Esquemas de XML usando a Ferramenta oXygen

Quando lidamos com geração de XML para envio a servidores de NF-e, NFS-e, dentre outros documentos fiscais, frequentemente lidamos com problemas de erros de esquema de XML. Mas como podemos fazer para identificar esses problemas nos XMLs? Nesse artigo vamos aprender como utilizar a ferramenta oXygen para identificar e corrigir esses problemas.

O oXygen é uma poderosa ferramenta para trabalhar com XML e todo tipo de tecnologia relacionada à XML, porém vamos usar apenas o recurso de validação de Esquema XML. Mas primeiro é melhor explicar do que se isso se trata.

Um esquema XML, também conhecido por XSD (pois essa é a extensão comum dos arquivos de esquema XML), é um XML também, mas é como se fosse uma “receita” de como se fabricar um XML, um conjunto de regras que um determinado XML precisa obedecer para ser considerado válido segundo ele. Isso garante que o conjunto de dados que o XML pretende transmitir esteja consistente com a utilidade que se deseja dar a ele. Frequentemente é a primeira validação de dados que os servidores de documentos fiscais fazem ao receber um XML.

Voltando ao oXygen, vamos primeiramente baixá-lo e instalá-lo. O oXygen XML Editor está disponível em http://www.oxygenxml.com/download_oxygenxml_editor.html . Ele requer o Java instalado no sistema. Durante o download, entre com seus dados e registre uma licença trial de 30 dias para poder utilizá-lo. Você irá receber a licença por email.

A instalação é bem fácil (no esquema “next, next, next… finish”), portanto não vou me ater à ela. Depois de instalado, execute o oXygen. Nessa primeira execução, ele irá solicitar a licença, portanto a insira aqui (copie e cole desde o “------START-LICENSE-KEY------” até o “-------END-LICENSE-KEY-------”).

Uma vez aberto, vamos abrir um XML. Para fins de exemplo, nesse artigo estará em anexo um XML de exemplo de NFS-e para o Rio de Janeiro. Baixe-o e abra-o com o oXygen (botão “Open…”).

Repare na barra lateral ao lado do scroll vertical. Ela contém um pequeno quadrado verde no topo. Essa barra indica quaisquer problemas que possa ter com a sintaxe do XML. Verde indica que está tudo OK, vermelho indica problemas, e pequenas faixas vermelhas indicam as posições dos problemas. No momento ela está verde, porém o XML não está ainda sendo confrontado com um esquema XML. Ou seja, é como se o XML estivesse “sintaticamente” correto, mas não sabemos ainda como ele está “semanticamente” (se ele faz “sentido” para o sistema de NFS-e do Rio de Janeiro).

Portanto, vamos agora associar um esquema XML ao nosso XML. Está em anexo também os esquemas XML para NFS-e do Rio de Janeiro (também disponíveis em https://notacarioca.rio.gov.br/manuais.aspx ). Baixe-os para uma pasta de sua preferência.

Clique no botão “Associate Schema…” (parece uma tachinha vermelha).

Depois, clique no botão “Browse for local file”, navegue até a pasta dos arquivos de esquema e escolha o arquivo “tipos_nfse_v01.xsd”.

Perceba que na barra lateral agora o quadradinho está vermelho, e também há uma faixa vermelha mais abaixo. Clicando nessa faixa, o editor te leva ao ponto onde há o problema. Ao passar o mouse em cima do texto sublinhado de vermelho, vemos uma explicação bem técnica sobre o problema.

Traduzindo, isso significa que a tag Cpf, ao possuir 14 caracteres, não está de acordo com o que o esquema XML especifica para essa tag, que é 11 caracteres. Oras, parece que estamos tentando informar um CNPJ na tag do Cpf. Portanto podemos ou informar de fato um CPF, com 11 caracteres numéricos…

… ou trocar a tag para CNPJ.

A barra lateral passa a indicar verde. Seu XML agora está válido segundo o esquema XML, e agora pode ser enviado ao servidor do Rio de Janeiro, porém muito provavelmente ainda será analisado sob outros aspectos (assinatura do XML, validade dos dados em si, etc).

https://tsdn.tecnospeed.com.br/files/render/a/gzPxfn3T2tY/m/2Aal0HUq8WduxC7MTfiJrC876Q9oqtPKFulo1zGh3YTMdCWqmECXtIK2rzeBYpGAGd9m8tsDl9k

https://tsdn.tecnospeed.com.br/files/render/a/gzPxfn3T2tY/m/2Aal0HUq8WdgHYSNi49a-fej_nO4073d_eiEfxsUf3GO_0OtYrMeyMz7hPf5-vqKv_-4rGp7D2A