Ferramenta de validação do esquema de XML (XSD)? [fechado]

no escritório estamos a escrever uma aplicação que irá gerar ficheiros XML contra um esquema que nos foi dado. Temos o esquema em an .Ficheiro XSD.

existem ferramentas ou bibliotecas que possamos usar para testes automáticos para verificar se o XML gerado corresponde ao esquema?

Nós preferiríamos ferramentas livres que são apropriadas para uso comercial, embora não vamos agrupar o controlador de esquema, por isso só precisa ser utilizável pelo devs durante desenvolvimento.

a nossa linguagem de desenvolvimento é C++ se isso fizer alguma diferença, embora eu não ache que deva, pois podemos gerar o ficheiro xml e depois fazer a validação chamando um programa separado no teste.

Author: Vertexwahn, 2008-09-24

14 answers

Depois de alguma pesquisa, acho que a melhor resposta é Xerces, uma vez que implementa todo o XSD, é multi-plataforma e amplamente utilizado. Criei um pequeno projecto Java no github para validar a partir da linha de comandos usando o analisador JRE predefinido, que é normalmente o Xerces. Isto pode ser usado no Windows/Mac/Linux.

Existe também uma versão C++ de Xerces, se preferires usar isso. O utilitário StdInParse pode ser usado para chamá-lo a partir do comando linha. Além disso, um comentarista abaixo aponta para este utilitário de embalagem mais completo.

Também pode usar o xmllint,que faz parte de libxml . Você pode muito bem já tê-lo instalado. Utilização do exemplo:

xmllint --noout --schema XSD_FILE XML_FILE

Um problema é que a libxml não implementa todas as especificações, por isso você pode ter problemas: (

Em alternativa, se estiver no Windows, pode usar msxml , mas irá precisar de algum tipo de invólucro para o chamar, como o GUI 1 descrito em este artigo DDJ. No entanto, parece que a maioria das pessoas no Windows, use um Editor de XML, como o Notepad++ (como descrito em Nate resposta) ou XML Notepad 2007 como sugerido por SteveC (também existem vários editores comerciais que não vou mencionar aqui).

Finalmente, você encontrará diferentes programas que, infelizmente, darão resultados diferentes. Isto é em grande parte devido à complexidade da especificação XSD. Você pode querer testar o seu esquema com vários ferramenta.

UPDATE: Eu expandi isso em um postno blog .

 228
Author: Adrian Mouat, 2017-05-23 12:26:36

Existe um 'plugin' para Notepad++ chamado XML Tools que oferece verificação e validação de XML contra um XSD.

Você pode ver como usá-lo Aqui .

 110
Author: Nate, 2016-07-06 13:59:38

O Xmlstarlet é uma ferramenta de linha de comandos que fará isto e mais:

$ xmlstarlet val --help
XMLStarlet Toolkit: Validate XML document(s)
Usage: xmlstarlet val <options> [ <xml-file-or-uri> ... ]
where <options>
  -w or --well-formed        - validate well-formedness only (default)
  -d or --dtd <dtd-file>     - validate against DTD
  -s or --xsd <xsd-file>     - validate against XSD schema
  -E or --embed              - validate using embedded DTD
  -r or --relaxng <rng-file> - validate against Relax-NG schema
  -e or --err                - print verbose error messages on stderr
  -b or --list-bad           - list only files which do not validate
  -g or --list-good          - list only files which validate
  -q or --quiet              - do not list files (return result code only)

NOTE: XML Schemas are not fully supported yet due to its incomplete
      support in libxml2 (see http://xmlsoft.org)

XMLStarlet is a command line toolkit to query/edit/check/transform
XML documents (for more information see http://xmlstar.sourceforge.net/)

A utilização no seu caso seria semelhante a:

xmlstarlet val --xsd your_schema.xsd your_file.xml
 22
Author: Charles Duffy, 2016-09-16 17:00:30

Para O Windows existe o bloco de notas XML livre . Pode seleccionar o XSD para validar contra

 14
Author: SteveC, 2010-10-12 13:19:29

O validador do esquema XML online da DecisionSoft permite-lhe verificar um ficheiro XML com um dado esquema.

 5
Author: , 2009-06-02 12:49:09
 3
Author: John, 2008-09-24 01:44:17

Está disponível um editor XML para validação rápida e fácil de XML em http://www.xml-buddy.com

Só precisa de executar o instalador e depois disso poderá validar os seus ficheiros XML com uma aplicação de ecrã fácil de usar ou com a linha de comandos. Além disso, você também obter suporte para Schematron e relaxar. A validação em lote também é suportada...

Actualização 1/13/2012: a ferramenta da linha de comandos é livre de usar e usa a Xerces como analisador XML.

 3
Author: Clemens, 2014-06-15 15:07:06

Http://www.xmlvalidation.com/

(Certifique-se de assinalar a opção "validar com um esquema XML externo")

 2
Author: , 2009-01-05 19:33:56
Só estou a aprender esquemas. Estou a usar o RELAX NG e o xmllint para validar. Estou a ficar frustrado com os erros do xmllint. Gostava que fossem um pouco mais informativos.

Se existir um atributo errado no XML, então o xmllint diz-lhe o nome do atributo não suportado. Mas se você está faltando um atributo no XML você apenas recebe uma mensagem dizendo que o elemento não pode ser validado.

Estou a trabalhar num XML muito complicado com muito complicado. regras, e sou novo nisto, por isso, descobrir qual atributo desapareceu está a demorar muito tempo.

Actualização: acabei de encontrar uma ferramenta java de que gosto muito. Pode ser executado a partir da linha de comandos como o xmllint e suporta RELAX NG: https://msv.dev.java.net/

 2
Author: Pengo, 2010-11-30 22:03:37

Encontrei este validador online de 'corefiling' bastante útil -
http://www.corefiling.com/opensource/schemaValidate.html

Depois de tentar algumas ferramentas para validar o meu xsd, este foi o que me deu informação detalhada de erro - por isso fui capaz de corrigir o erro no esquema.

 2
Author: iniki, 2012-05-28 11:31:53

Uma grande ferramenta visual para validar e gerar XSD a partir de XML é a ideia IntelliJ, intuitiva e simples.

 1
Author: jipipayo, 2012-10-08 10:43:37
Pode ligar o seu esquema XML à inteligência do Microsoft Visual Studio. Esta opção dá-lhe validação em tempo real e autocompleta, o que é simplesmente incrível.

Tenho este cenário exacto a correr na minha cópia gratuita do Microsoft Visual C++ 2010 Express.

 1
Author: AaronDanielson, 2014-10-10 21:44:40

Outro validador de XML online (XSD): http://www.utilities-online.info/xsdvalidation/.

 1
Author: Ignacio Corral Campos, 2015-07-22 06:13:46

Costumo usar o xsd da Microsoft para ajudar a gerar o xsd a partir de um ficheiro.net. Também analiso as secções do xml usando o xmlstarlet. A ferramenta livre final que lhe seria útil é o altovaxml, que está disponível neste URL: http://www.altova.com/download_components.html

Isto permite-me analisar todos os ficheiros xml que captam o xsd a usar ao analisar o xml.

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

Para gerar o xml que uso: XSD DOTNET.dll / type: CFGCLASS & mudar o nome do esquema 0.xsd Classe CFGCLASS.xsd

Para obter o nome xsd que uso: xmlstarlet sel-t - m / XXX / * - v nome local () $1 / sed 's/ $//'

Isto permite-me recolher o XSD correcto usando uma marca de elementos dentro do ficheiro xml.

O resultado é que eu posso chamar uma função bash para digitalizar todos os arquivos XML e verificá-los. Mesmo que estejam em vários subdiretórios.

 0
Author: Andrew Stern, 2012-05-22 18:53:33