Alguma ferramenta para gerar um esquema XSD a partir de um documento de instância XML? [fechadas]

146

Estou procurando uma ferramenta que pegue um documento de instância XML e produza um esquema XSD correspondente.

Certamente reconheço que o esquema XSD gerado será limitado quando comparado à criação de um esquema manualmente (provavelmente não manipulará elementos opcionais ou repetitivos ou restrições de dados), mas poderia pelo menos servir como um ponto de partida rápido.

Matt Dillard
fonte

Respostas:

65

a ferramenta de inferência do Microsoft XSD é uma solução boa e gratuita. Muitas ferramentas de edição de XML, como o XmlSpy (mencionado por @Garth Gilmour) ou o OxygenXML Editor também possuem esse recurso. Eles são bastante caros, no entanto. O BizTalk Server também possui uma ferramenta para inferir XSD.

edit: Acabei de descobrir a classe .net XmlSchemaInference , portanto, se você estiver usando .net, considere isso

Danimal
fonte
1
uau, meses depois você me indicou uma ótima solução para fazer uma rápida conversão de XDR para XSD! Obrigado!
25411 bethlakshmi
6
Foi difícil encontrar um download para essa ferramenta (xsd.exe), mas já estava no meu sistema em C: \ Arquivos de Programas \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Só pensei em compartilhar caso isso ajude alguém.
oob
2
No caso de alguém não tem Visual Studio instalado, aqui está um link alternativo para baixar xsd: juliankay.com/development/download-xsd-exe
MD
5
O diretório parece xsd.exeter mudado no Windows 7. Eu tê-lo em muitos Microsoft SDKsdiretórios, entre os quais um presente (para que ele não parece depende necessariamente Visual Studio mais?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Eu tive que executá-lo no diretório que contém o xml, para evitar um erro sobre "caracteres ilegais no caminho", mas isso pode ser devido ao nome de arquivo longo que tenho.
Yahoo Serious
Alguém mais está tendo problemas para usar a ferramenta de inferência MS XSD, gerando uma OutOfMemoryException para um arquivo XML de 200 MB com ainda mais de 8 GB de RAM livre?
Felipe Sabino
54

Você pode usar uma opção de código aberto e de plataforma cruzada: inst2xsd do XMLBeans do Apache . Acho muito útil e fácil.

Basta baixar, descompactar e jogar (requer Java).

Dario
fonte
ótima dica, que realmente me ajudou muito, thx!
IAdapter 26/06/09
2
OMG Isso é muito melhor do que toda essa besteira do Powershell! Especialmente porque eu não tinha um arquivo XSD!
Chloe
3
funcionou como um encanto :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio
3
Observe que o XMLBeans foi movido para attic.apache.org , a casa dos projetos aposentados do Apache. Em outras palavras, ele não é atualizado desde 2012.
Magnilex 01/09/2015
51

Trang é a melhor opção aqui. Código aberto e plataforma cruzada (embora seja necessário Java)

No site da Trang:

Trang converte entre diferentes linguagens de esquema para XML. Ele suporta os seguintes idiomas

  • RELAX NG (sintaxe XML)
  • Sintaxe compacta RELAX NG
  • DTDs XML 1.0
  • Esquema XML do W3C

Um esquema gravado em qualquer uma das linguagens de esquema suportadas pode ser convertido em qualquer uma das outras linguagens de esquema suportadas, exceto que o Esquema XML do W3C é suportado apenas para saída, não para entrada.

Trang também pode inferir um esquema de um ou mais documentos XML de exemplo.

Link para Download

Derferman
fonte
O Trang também é a ferramenta integrada ao OxygenXML para fazer sua inferência XSD de um ou mais documentos XMl. Na primeira tentativa aqui, parece funcionar bem.
precisa saber é
4
Se tudo o que você precisa é gerar xsd a partir de um arquivo xml, o trang é o IMHO melhor, mais rápido e mais fácil.
kriver
2
A documentação do trang é um pouco fina. Para gerar um esquema, execute $ trang file.xml schema.xsd.
precisa
em janelas de correr: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov
Teve subestruturas que aparecem da mesma forma em vários lugares na minha amostra XML, Trang fez um trabalho perfeito ao detectar a repetição e gerar um XSD mínimo, que é o que eu precisava. Muito agradável!
Tomislav Nakic-Alfirevic 4/11
17

No VS2010, se você carregar um arquivo XML no editor, clique no menu XML >> Criar esquema.

Nathan Donnellan
fonte
3
E em versões superiores
Jay Jay Jay
12

Também existe o XML schema learnerque está disponível no Github .

Ele pode pegar vários arquivos xml e extrair um XSD comum de todos esses arquivos .

edoriano
fonte
1
Esteja ciente de que esta ferramenta é escrita em php, por isso não é trivial de configurar.
79E09796 19/03/12
5
@ 79E09796 Instalar um php cli com sudo apt-get install php5-clie funcionando ./learn --help--- Eu realmente não vejo a diferença entre isso e uma ferramenta escrita em Java, Python ou Ruby :)
edorian
1
apenas tentei no windows - funcionou muito bem com o php 5.4 sem qualquer instalação. PHP e XML Schema aluno apenas descompactado e executado usando os caminhos completos;)
vak
pequeno comentário sobre o localitycampo: se um nome de campo for usado em vários lugares no XML, referindo-se a diferentes elementos, um localityvalor maior que 1 será necessário, por exemplo, root/iteme se root/something/itemreferirá a tipos diferentes, então --locality 2será necessário no mínimo
shadi
10

Se você tiver o .Net instalado, uma ferramenta para gerar esquemas e classes XSD já estará incluída por padrão.
Para mim, a ferramenta XSD é instalada sob a seguinte estrutura. Isso pode variar dependendo do diretório de instalação.

C:\Program Files\Microsoft Visual Studio 8\VC>xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.

xsd.exe -
   Utility to generate schema or class files from given source.

xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]

Normalmente, as classes e esquemas que essa ferramenta gera funcionam muito bem, especialmente se você os consumir em uma linguagem .Net

Normalmente, pego o documento XML que procuro, envia-o através da ferramenta XSD com o /o:<your path>sinalizador para gerar um esquema (xsd) e, em seguida, envia o arquivo xsd pela ferramenta usando os /classes /L:VB (or CS) /o:<your path>sinalizadores para obter classes que eu posso importar e usar nos meus projetos .Net do dia a dia

Pat Hermens
fonte
6

Se tudo o que você deseja é XSD, o LiquidXML possui uma versão gratuita que executa XSDs e possui uma GUI para que você possa ajustar o XSD, se quiser. De qualquer forma hoje em dia eu escrevo meus próprios XSDs à mão, mas tudo isso graças a este aplicativo.

http://www.liquid-technologies.com/

Robert Gould
fonte
4

se você estiver trabalhando no mundo java - a idéia intelliJ também possui amplo suporte a xml, incluindo xsd generation e samle xml da xsd generation, e com plugins você pode obter depuradores xslt. - especialmente agradável se você planeja usar ferramentas como o jaxb posteriormente.

Andreas Petersson
fonte
2
E isso também está disponível na edição comunitária gratuita do Idea.
lbalazscs
3

O Altova XmlSpy faz isso bem - você pode encontrar uma visão geral aqui

Garth Gilmour
fonte
3

Este é um tópico antigo, mas achei que poderia ser útil postar este link: encontrei esta ferramenta: xsd-gen Gerar esquema XML a partir de XML

e fez o que eu precisava.

v_e
fonte