Des outils pour générer un schéma XSD à partir d'un document d'instance XML? [fermé]

146

Je recherche un outil qui prendra un document d'instance XML et produira un schéma XSD correspondant.

Je reconnais certainement que le schéma XSD généré sera limité par rapport à la création d'un schéma à la main (il ne gèrera probablement pas les éléments facultatifs ou répétitifs, ou les contraintes de données), mais cela pourrait au moins servir de point de départ rapide.

Matt Dillard
la source

Réponses:

65

l' outil d'inférence Microsoft XSD est une bonne solution gratuite. De nombreux outils d'édition XML, tels que XmlSpy (mentionné par @Garth Gilmour) ou OxygenXML Editor ont également cette fonctionnalité. Ils sont cependant assez chers. BizTalk Server dispose également d'un outil d'inférence XSD.

edit: Je viens de découvrir la classe .net XmlSchemaInference , donc si vous utilisez .net, vous devriez considérer cela

Danimal
la source
1
wow, des mois plus tard, vous m'avez indiqué une excellente solution pour effectuer une conversion rapide de XDR vers XSD! Merci!
bethlakshmi
6
Il était difficile pour moi de trouver un téléchargement pour cet outil (xsd.exe), mais il était déjà sur mon système dans C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Je pensais juste que je partagerais au cas où cela aiderait quiconque.
oob
2
Si
MD
5
Le répertoire semble xsd.exeavoir changé sur Windows 7. Je l' ai dans de nombreux Microsoft SDKsrépertoires, parmi lesquels celui - ci (il ne semble pas dépendre nécessairement Visual Studio plus?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. J'ai dû l'exécuter dans le répertoire contenant le xml, pour éviter une erreur concernant les "caractères illégaux dans le chemin", mais cela peut être dû au long nom de fichier que j'ai.
Yahoo Serious
Quelqu'un d'autre ayant des difficultés à utiliser l'outil d'inférence MS XSD, soulevant une exception OutOfMemoryException pour un fichier XML de 200 Mo avec encore plus de 8 Go de RAM libre?
Felipe Sabino
54

Vous pouvez utiliser une option open source et multiplateforme: inst2xsd de XMLBeans d' Apache . Je trouve cela très utile et facile.

Téléchargez, décompressez et jouez (cela nécessite Java).

Dario
la source
super conseil, ça m'a vraiment beaucoup aidé, merci!
IAdapter
2
OMG C'est tellement mieux que toutes ces conneries de Powershell! Surtout que je n'avais pas de fichier XSD!
Chloe
3
fonctionnait comme un charme :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio
3
Notez que XMLBeans a été déplacé vers attic.apache.org , la maison des projets Apache retirés. En d'autres termes, il n'a pas été mis à jour depuis 2012.
Magnilex
51

Trang est la meilleure option ici. Open source et multiplateforme (bien que Java soit requis)

Sur le site Web de Trang:

Trang convertit entre différents langages de schéma pour XML. Il prend en charge les langues suivantes

  • RELAX NG (syntaxe XML)
  • Syntaxe compacte RELAX NG
  • DTD XML 1.0
  • Schéma XML du W3C

Un schéma écrit dans l'un des langages de schéma pris en charge peut être converti dans l'un des autres langages de schéma pris en charge, sauf que le schéma XML W3C est pris en charge pour la sortie uniquement, pas pour l'entrée.

Trang peut également déduire un schéma d'un ou plusieurs exemples de documents XML.

Lien de téléchargement

Derferman
la source
Trang est également l'outil intégré à OxygenXML pour faire son inférence XSD à partir d'un ou plusieurs documents XMl. Au premier essai ici, cela semble bien fonctionner.
redcalx
4
Si tout ce dont vous avez besoin est de générer xsd à partir d'un fichier xml, trang est le meilleur, le plus rapide et le plus simple à mon humble avis.
kriver
2
La documentation trang est un peu mince. Pour générer un schéma, exécutez $ trang file.xml schema.xsd.
Joe Mornin
sous windows exécutez: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov
Avait des sous-structures qui apparaissent sous la même forme à divers endroits dans mon exemple XML, Trang a fait un travail parfait en détectant la répétition et en générant un XSD minimal, ce dont j'avais besoin. Très agréable!
Tomislav Nakic-Alfirevic
17

Dans VS2010, si vous chargez un fichier XML dans l'éditeur, cliquez sur le menu XML >> Créer un schéma.

Nathan Donnellan
la source
3
Et dans les versions supérieures
Jay Jay Jay
12

Il y en a aussi XML schema learnerqui est disponible sur Github .

Il peut prendre plusieurs fichiers xml et extraire un XSD commun de tous ces fichiers .

édorien
la source
1
Sachez que cet outil est écrit en PHP, il n'est donc pas simple à configurer.
79E09796
5
@ 79E09796 Installer un cli php avec sudo apt-get install php5-cliet en cours d'exécution ./learn --help--- Je ne vois pas vraiment la différence entre cela et un outil écrit en java, python ou ruby ​​:)
édorien
1
juste essayé sous Windows - a très bien fonctionné avec php 5.4 sans aucune installation. Les apprenants php et XML Schema viennent d'être décompressés et exécutés en utilisant les chemins complets;)
vak
petit commentaire sur le localitychamp: si un nom de champ est utilisé à plusieurs endroits dans le XML faisant référence à différents éléments, une localityvaleur supérieure à 1 est requise, par exemple root/itemet se root/something/itemréfère à différents types, alors --locality 2est requise au minimum
shadi
10

Si .Net est installé, un outil pour générer des schémas et des classes XSD est déjà inclus par défaut.
Pour moi, l'outil XSD est installé sous la structure suivante. Cela peut différer en fonction de votre répertoire d'installation.

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:]

Normalement, les classes et les schémas générés par cet outil fonctionnent plutôt bien, surtout si vous allez les consommer dans un langage .Net

Je prends généralement le document XML que je cherche, le pousse à travers l'outil XSD avec le /o:<your path>drapeau pour générer un schéma (xsd), puis /classes /L:VB (or CS) /o:<your path>je repousse le fichier xsd à travers l'outil en utilisant les indicateurs pour obtenir des classes que je peux importer et utiliser dans mes projets .Net au jour le jour

Pat Hermens
la source
6

Si tout ce que vous voulez, c'est XSD, LiquidXML a une version gratuite qui fait XSD, et elle a une interface graphique pour que vous puissiez modifier le XSD si vous le souhaitez. Quoi qu'il en soit de nos jours, j'écris mes propres XSD à la main, mais c'est grâce à cette application.

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

Robert Gould
la source
4

si vous travaillez dans le monde java - intelliJ idea a également un support xml étendu, y compris la génération xsd et samle xml de la génération xsd, et avec des plugins, vous pouvez obtenir des débogueurs xslt. - particulièrement agréable si vous prévoyez d'utiliser des outils tels que jaxb par la suite.

Andreas Petersson
la source
2
Et ceci est également disponible dans l'édition communautaire gratuite d'Idea.
lbalazscs
3

Altova XmlSpy fait bien cela - vous pouvez trouver un aperçu ici

Garth Gilmour
la source