2008-09-16 22 views
138

Estoy buscando una herramienta que tomará un documento de instancia XML y generará un esquema XSD correspondiente.¿Alguna herramienta para generar un esquema XSD a partir de un documento de instancia XML?

Ciertamente reconozco que el esquema XSD generado será limitado en comparación con crear un esquema a mano (probablemente no manejará elementos opcionales o repetitivos, o restricciones de datos), pero podría servir al menos como un inicio rápido punto.

Respuesta

62

Microsoft XSD inference tool es una solución buena y gratuita. Muchas herramientas de edición XML, como XmlSpy (mencionado por @Garth Gilmour) o OxygenXML Editor también tienen esa característica. Aunque son bastante caros. BizTalk Server también tiene una herramienta de infusión XSD.

editar: Me acaba de descubrir la clase de .NET XmlSchemaInference, por lo que si usted está utilizando .NET debe tener en cuenta que

+1

wow, ¡meses después me apuntó a una gran solución para hacer una conversión rápida de XDR a XSD! ¡Gracias! – bethlakshmi

+6

Me resultó difícil encontrar una descarga para esta herramienta (xsd.exe), pero ya estaba en mi sistema en C: \ Archivos de programa \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Solo pensé que lo compartiría en caso de que eso ayude a alguien. – oob

+2

En caso de que alguien no tenga instalado Visual Studio, aquí hay un enlace alternativo para descargar xsd: http://juliankay.com/development/download-xsd-exe/ –

3

Altova XMLSpy hace esto bien - se puede encontrar una visión general here

6

Si todo lo que quiere es XSD, LiquidXML tiene una versión gratuita que hace XSD, y tiene una GUI para que pueda ajustar el XSD si lo desea. De todos modos hoy en día escribo mis propios XSD a mano, pero todo es gracias a esta aplicación.

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

9

Si ha instalado .Net, una herramienta para generar esquemas XSD y clases ya está incluido por defecto.
Para mí, la herramienta XSD se instala bajo la siguiente estructura. Esto puede diferir dependiendo de su directorio de instalación.

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 las clases y los esquemas que esta herramienta genera el trabajo bastante bien, sobre todo si vas a estar consumiendo en un lenguaje .Net

Me suelen llevar el documento XML que estoy después de , empújelo a través de la herramienta XSD con el indicador /o:<your path> para generar un esquema (xsd) y luego empuje el archivo xsd hacia atrás a través de la herramienta usando los indicadores /classes /L:VB (or CS) /o:<your path> para obtener clases que pueda importar y usar en mi día a día .Net projects

4

si está trabajando en el mundo java - intelliJ idea también tiene soporte extenso xml, incluyendo xsd generation y samle xml de xsd generation, y con plugins puedes obtener xslt depuradores. - Especialmente bueno si planeas usar herramientas como jaxb después.

+2

Y esto también está disponible en la edición comunitaria gratuita de Idea. – lbalazscs

52

Puede utilizar una opción de fuente abierta y multiplataforma: inst2xsd desde Apache's XMLBeans. Lo encuentro muy útil y fácil.

Simplemente descargue, descomprima y juegue (requiere Java).

+0

gran consejo, eso realmente me ayudó mucho, ¡gracias! – IAdapter

+2

OMG ¡Esto es mucho mejor que toda esa mierda de Powershell! ¡Especialmente porque no tenía un archivo XSD! – Chloe

+0

La versión de comunidad gratuita de IntelliJ también tiene dicha funcionalidad: http://www.jetbrains.com/idea/webhelp/generating-xml-schema-from-instance-document.html – Nick

50

Trang es la mejor opción aquí. de código abierto y multiplataforma (aunque se requiere Java)

Desde el sitio web Trang:

Trang convierte entre diferentes lenguajes de esquema XML.Es compatible con los siguientes idiomas

  • RELAX NG (sintaxis XML)
  • Relax NG sintaxis compacta
  • XML 1.0 DTD
  • W3C XML Schema

Un esquema escrito en cualquiera de los apoyada los lenguajes de esquema se pueden convertir a cualquiera de los otros lenguajes de esquema admitidos, excepto que el Esquema XML de W3C solo se admite para la salida, no para la entrada.

Trang también puede inferir un esquema de uno o más documentos XML de ejemplo.

Download Link

+0

Trang es también la herramienta integrada en OxygenXML para hacer su inferencia XSD de uno o más documentos XMl. Al primer intento aquí parece funcionar bien. – redcalx

+4

Si todo lo que necesita es generar xsd desde el archivo xml, trang es el mejor, más rápido y más fácil en mi humilde opinión. – kriver

+2

La documentación de trang es un poco delgada. Para generar un esquema, ejecute '$ trang file.xml schema.xsd'. –

11

también hay XML schema learner que está disponible en Github.

Puede tomar varios archivos XML y extracto de un XSD común de todos esos archivos.

+1

Tenga en cuenta que esta herramienta está escrita en php, por lo que no es trivial de configurar. – 79E09796

+5

@ 79E09796 Instalando un cli php con 'sudo apt-get install php5-cli' y ejecutando' ./learn --help' --- Realmente no veo la diferencia entre eso y una herramienta escrita en java, python o ruby :) – edorian

+1

acaba de probar en Windows - funcionó muy bien con php 5.4 sin ninguna instalación. Tanto el aprendiz php como XML Schema solo se descomprimieron y ejecutaron usando las rutas completas;) – vak

14

En VS2010 si carga un archivo XML en el editor, haga clic en el menú XML >> Crear esquema.

+2

Y en versiones superiores –

2

Se trata de un viejo hilo, pero pensé que podría ser útil para publicar este enlace: acaba de encontrar esta herramienta: xsd-gen Generate XML Schema from XML

y que sólo hizo lo que necesitaba.

Cuestiones relacionadas