¿Alguna herramienta para generar un esquema XSD a partir de un documento de instancia XML?

Estoy buscando una herramienta que tomará un documento de instancia XML y generará un esquema XSD correspondiente.

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

la herramienta de inferencia XSD de Microsoft 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: Acabo de descubrir la clase .net XmlSchemaInference , así que si estás usando .net deberías considerar

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

Solo descarga, descomprime y juega (requiere Java).

Trang es la mejor opción aquí. Código abierto y plataforma cruzada (aunque se requiere Java)

Desde el sitio web de Trang:

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

  • RELAX NG (syntax XML)
  • Sintaxis compacta RELAX NG
  • DTD XML 1.0
  • Esquema W3C XML

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

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

Enlace de descarga

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

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

Puede tomar múltiples archivos xml y extraer un XSD común de todos esos archivos .

Si tiene .Net instalado, una herramienta para generar esquemas y clases XSD ya está incluida 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 .xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:] xsd.exe .dll|.exe [/outputdir:] [/type: [...]] xsd.exe .xml [/outputdir:] xsd.exe .xdr [/outputdir:] 

Normalmente las clases y los esquemas que genera esta herramienta funcionan bastante bien, especialmente si vas a consumirlos en un lenguaje .Net

Normalmente tomo el documento XML que busco, lo paso por la herramienta XSD con el indicador /o: para generar un esquema (xsd) y luego vuelvo a insertar el archivo xsd a través de la herramienta usando /classes /L:VB (or CS) /o: flags para obtener clases que puedo importar y usar en mis proyectos diarios de .Net

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/

si está trabajando en el mundo de Java, la idea de intelliJ también tiene una gran compatibilidad con xml, incluida la generación xsd y samle xml de la generación xsd, y con los complementos puede obtener los depuradores xslt. – Especialmente bueno si planeas usar herramientas como jaxb después.

Altova XmlSpy lo hace bien; puede encontrar una descripción general aquí

Este es un hilo viejo, pero pensé que podría ser útil publicar este enlace: acabo de encontrar esta herramienta: xsd-gen Generar esquema XML a partir de XML

y simplemente hizo lo que necesitaba.