Validador de XML com XSD
// o resultado da validação aparecerá aqui
O validador de XSD confere um documento XML contra um ou mais schemas XSD e lista os erros encontrados, com a linha de cada um. É a checagem que responde se o documento obedece ao contrato, não apenas se ele está bem formado.
Boa formação e validade são coisas diferentes
Um XML bem formado tem tags que abrem e fecham na ordem certa, conforme a especificação do XML. Um XML válido, além disso, obedece a um esquema: os elementos certos, na ordem certa, com os tipos certos, conforme o XML Schema. Sem schema carregado a ferramenta verifica apenas a boa formação e diz isso explicitamente no resultado.
Você pode carregar vários schemas de uma vez, o que é necessário quando o XSD principal usa import ou include para puxar outros. O limite é de cem arquivos por sessão.
Validação de verdade, no navegador
A validação usa a libxml2 compilada para WebAssembly, o mesmo motor por trás do xmllint que você usaria no terminal. Isso significa validação real de XSD 1.0, não uma aproximação por expressão regular, rodando localmente.
A consequência prática é que o resultado bate com o que o servidor de destino vai dizer, porque muita integração corporativa valida com a mesma libxml. E o documento não precisa sair da sua máquina para ser conferido, o que importa quando ele tem dado fiscal ou pessoal.
Por que XSD 1.0 e não 1.1
A versão 1.1 existe desde 2012 e traz assertions e tipos condicionais, mas quase nenhum motor a implementou por completo, a libxml2 incluída. Na prática, contratos de integração no Brasil, NF-e e schemas bancários entre eles, são escritos em 1.0 justamente porque é o que todo mundo consegue validar.
Perguntas frequentes
Preciso enviar o XML para um servidor?
Não. O validador roda inteiramente no navegador via WebAssembly. Documento e schemas são lidos localmente, o que importa quando o XML tem dado fiscal ou pessoal.
Posso carregar mais de um schema?
Sim, até cem arquivos. É o cenário normal quando o XSD principal usa import ou include para puxar outros schemas.
Ele valida XSD 1.1?
Não. A validação cobre XSD 1.0, que é o que a libxml2 implementa e o que praticamente todos os contratos de integração usam na prática, inclusive os da NF-e.
O resultado é o mesmo do xmllint?
É o mesmo motor, a libxml2, compilada para WebAssembly. As mensagens de erro e o veredito são os que o xmllint daria na linha de comando.
Referências
- W3C: XML Schema Part 1 (Structures)A especificação do XSD 1.0, que é a versão validada aqui.
- W3C: XML Schema Definition Language 1.1A versão seguinte, para entender o que ficou de fora e por quê.
- libxml2O motor de validação usado aqui, o mesmo do xmllint.