No escritório, estamos atualmente escrevendo um aplicativo que irá gerar arquivos XML em um esquema que nos foi dado. Temos o esquema em um arquivo .XSD.
Existem ferramentas ou bibliotecas que podemos usar para testes automatizados para verificar se o XML gerado corresponde ao esquema?
Preferimos ferramentas gratuitas apropriadas para uso comercial, embora não agrupemos o verificador de esquema, portanto, ele só precisa ser utilizável pelos desenvolvedores durante o desenvolvimento.
Nossa linguagem de desenvolvimento é C ++, se isso faz alguma diferença, embora eu não ache que deveria, pois poderíamos gerar o arquivo xml e, em seguida, fazer a validação chamando um programa separado no teste.
xml
validation
xsd
schema
Jason Dagit
fonte
fonte
Respostas:
Após algumas pesquisas, acho que a melhor resposta é o Xerces , que implementa todo o XSD, é multiplataforma e amplamente utilizado. Criei um pequeno projeto Java no github para validar na linha de comando usando o analisador JRE padrão, que normalmente é Xerces. Isso pode ser usado no Windows / Mac / Linux.
Existe também uma versão C ++ do Xerces disponível, se você preferir usá-la. O utilitário StdInParse pode ser usado para chamá-lo na linha de comando. Além disso, um comentarista abaixo aponta para este utilitário mais completo de wrapper .
Você também pode usar xmllint, que faz parte da libxml . Você já pode tê-lo instalado. Exemplo de uso:
Um problema é que o libxml não implementa toda a especificação; portanto, você pode ter problemas :(
Como alternativa, se você estiver no Windows, poderá usar o msxml , mas precisará de algum tipo de wrapper para chamá-lo, como a GUI descrita neste artigo do DDJ . No entanto, parece que a maioria das pessoas no Windows usa um editor de XML, como o Notepad ++ (como descrito na resposta de Nate ) ou o XML Notepad 2007, conforme sugerido por SteveC (também existem vários editores comerciais que não mencionarei aqui).
Por fim, você encontrará diferentes programas que, infelizmente, fornecerão resultados diferentes. Isso se deve em grande parte à complexidade das especificações XSD. Você pode testar seu esquema com várias ferramentas.
ATUALIZAÇÃO : Eu expandi isso em uma postagem no blog .
fonte
xmllint
infelizmente não é compatível com regex XML, portanto, alguns regexes XML válidos não o passarão #Há um plug-in para o Notepad ++ chamado XML Tools que oferece verificação e validação de XML em relação a um XSD.
Você pode ver como usá-lo aqui .
fonte
XML
próprio referenciar umXSD
arquivo, por exemploxsi:noNamespaceSchemaLocation="file.xsd"
, o XML Tools tentará usá-lo em vez de fornecer um diálogo "definido".O xmlstarlet é uma ferramenta de linha de comando que fará isso e muito mais:
O uso no seu caso seria na linha de:
fonte
Para Windows, existe o XML Notepad 2007 gratuito . Você pode selecionar XSDs para validar contra
UPDATE: melhor ainda, use o Notepad ++ com o plugin XML Tools
fonte
O validador de esquema XML online da DecisionSoft permite verificar um arquivo XML em um determinado esquema.
fonte
Eu uso o Xerces:
http://xerces.apache.org/xerces-c/
fonte
sudo apt install libxerces-c-samples
e verificar o documento comStdInParse -v=always -n -s < document.xml
.http://www.xmlvalidation.com/
(Certifique-se de marcar a caixa "Validar contra esquema XML externo")
fonte
Estou apenas aprendendo o esquema. Estou usando o RELAX NG e usando o xmllint para validar. Estou ficando frustrado com os erros que saem do xmlllint. Eu gostaria que eles fossem um pouco mais informativos.
Se houver um atributo errado no XML, xmllint informa o nome do atributo não suportado. Mas se estiver faltando um atributo no XML, você receberá uma mensagem informando que o elemento não pode ser validado.
Estou trabalhando em um XML muito complicado com regras muito complicadas e sou novo nisso, portanto, rastrear qual atributo está faltando está demorando muito.
Atualização: Acabei de encontrar uma ferramenta java que estou gostando muito. Pode ser executado a partir da linha de comando, como xmllint, e suporta RELAX NG: https://msv.dev.java.net/
fonte
Achei esse validador on-line do 'corefiling' bastante útil -
http://www.corefiling.com/opensource/schemaValidate.html
Depois de tentar algumas ferramentas para validar meu xsd, essa foi a que me deu informações detalhadas sobre o erro - para que eu pudesse corrigir o erro no esquema.
fonte
Um editor XML para validação XML rápida e fácil está disponível em http://www.xml-buddy.com
Você só precisa executar o instalador e, depois disso, pode validar seus arquivos XML com um aplicativo de desktop fácil de usar ou com a linha de comando. Além disso, você também recebe suporte para Schematron e RelaxNG. A validação em lote também é suportada ...
Atualização 1/13/2012: A ferramenta de linha de comando é livre para usar e usa o Xerces como analisador XML.
fonte
Uma ótima ferramenta visual para validar e gerar XSD a partir de XML é o IntelliJ IDEA, intuitivo e simples.
fonte
Você pode conectar seu esquema XML ao Intellisense do Microsoft Visual Studio. Essa opção fornece validação em tempo real E preenchimento automático, o que é incrível.
Eu tenho esse cenário exato em execução na minha cópia gratuita do Microsoft Visual C ++ 2010 Express.
fonte
Outro validador online do XML Schema (XSD): http://www.utilities-online.info/xsdvalidation/ .
fonte
Eu costumo usar o xsd da Microsoft para ajudar a gerar o xsd a partir de um arquivo .NET. Também analiso seções do xml usando xmlstarlet. A ferramenta gratuita final que seria útil para você é o altovaxml, disponível neste URL: http://www.altova.com/download_components.html .
Isso me permite verificar todos os arquivos xml, escolhendo qual xsd usar analisando o xml.
Para gerar o xml, uso: xsd DOTNET.dll / tipo: CFGCLASS & renomeie schema0.xsd CFGCLASS.xsd
Para obter o nome xsd, eu uso: xmlstarlet sel -t -m / XXX / * -v local-name () $ 1 | sed / $ // '
Isso permite que eu pegue o XSD correto usando uma tag de elemento no arquivo xml.
O resultado final é que posso chamar uma função bash para verificar todos os arquivos XML e verificá-los. Mesmo se eles estiverem em vários subdiretórios.
fonte