Cómo derivar DTD (u otro formato de especificaciones XML) a partir de muestras de archivos XML

StackOverflow https://stackoverflow.com/questions/1815216

  •  06-07-2019
  •  | 
  •  

Pregunta

¿Conoce una herramienta que obtenga un DTD (u otro formato de especificación de estructura XML) de un conjunto de muestra de archivos XML?

Actualmente, la única validación (automática) que tenemos para un DSL codificado xml es un analizador heredado escrito en Perl, pero por razones de coherencia, todo el código de Perl debe ser portado a C-sharp.

¿Fue útil?

Solución

http://www.stylusstudio.com/dtd_generator.html es un software real que implementa un Generador DTD.

http://www.pmg.csail.mit.edu /~chmoh/pubs/wecwis.pdf parece un buen documento sobre el tipo de cosas que necesitarías, pero hasta ahora no puedo encontrar (enlaces a) código real en ningún lugar del documento.

Aquí hay otro documento sobre esto, de nuevo, no se encuentra ningún código: http : //www.softnet.tuc.gr/~minos/Papers/debull03.pdf .

Finalmente, también te sugiero que consideres usar RELAX NG o Schematron para validar tu XML. Esos lenguajes son mucho más expresivos, lo que los hace más fáciles de leer y más potentes en el tipo de cosas que puede validar. (Asegúrese de omitir el esquema XML, que se considera un desastre).

Otros consejos

Puede usar xsd.exe (parte de Visual Studio) para generar un esquema XML para un archivo XML dado.

Puede usar el siguiente enlace para generar esquemas en línea, proporcionando solo los datos xml. http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx

Puede descargar la edición de la comunidad JetBrains IDEA que es gratuita. Tiene herramientas integradas para generar GTD y esquemas:

http://www.jetbrains.com/idea/webhelp/generating- dtd.html

Tal vez no sea perfecto, pero es algo.

Aquí está el programa que funcionó para mí DTDGenerator . Necesita compilarlo con Java, pero funciona bien. Estoy sorprendido por la falta de software libre para un idioma que ha existido durante mucho tiempo, pero este es gratuito bajo la Licencia Pública Mozilla Versión 1.0.

XMLSpy de Altova tiene un generador de esquemas DTD / XML.

El esquema DTD / XML generado generalmente requiere un pequeño ajuste. Por ejemplo, la herramienta puede enumerar una lista de atributos o elementos, cuando usted '' quiso decir '' para que permita cualquier valor. Solo le está dando una muestra de su espacio problemático, y tiene que ir de lo específico a lo general. Por esa razón, no me doblo demasiado cuando no puedo leer mi mente.

Considero que el dtd o esquema generado es un punto de partida. Es mejor que rodarlo a mano desde cero. Er, si está comenzando con documentos XML existentes, eso es.

Incluso si no va a utilizar el dtd generado, es una muy buena manera de entender la estructura de un conjunto de documentos XML desconocidos.

El editor XMLMax creará un XSD a partir de un archivo XML. La prueba gratuita (sin registro / pequeño archivo de descarga) lo hará por usted. Si desea hacer esto en código, .NET framework tiene una clase XmlSchemaInference que crea automáticamente un XSD a partir de un archivo xml.

Recién usado http://www.freeformatter.com/xsd-generator.html para generar un xsd desde un archivo xml. ¡También tiene muchas otras posibilidades de formateo!

Es posible que desee probar Trang o Instancia a la herramienta de esquema (parte de XMLBeans ).

Los puse a prueba con un archivo XML de 1GB. Aquí están los resultados:

Trang :

max memory [kB] - 98,480
time [MM:SS] - 0:24

Instancia a la herramienta de esquema :

max memory [kB] - 5,993,240
time [MM:SS] - 7:36
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top