Как получить DTD (или другой формат спецификации XML) из образцов XML-файлов

знаете ли вы инструмент, который будет выводить DTD (или другой формат спецификации структуры XML) из образца набора XML-файлов?

В настоящее время единственная (автоматическая) проверка, которую мы имеем для кодированного XML DSL,-это устаревший парсер, написанный на Perl, но по соображениям согласованности весь код perl должен быть перенесен на C-sharp.

9 ответов


http://www.stylusstudio.com/dtd_generator.html фактическое програмное обеспечение снабжая генератор DTD.

http://www.pmg.csail.mit.edu / ~chmoh / пабы / wecwis.pdf кажется хорошей бумагой о том, что вам нужно, но я не могу найти (ссылки на) фактический код в любом месте бумаги до сих пор.

вот еще одна статья об этом, опять же, код не найден: http://www.softnet.tuc.gr / ~minos / Papers / debull03.pdf.

наконец, я бы также предложил вам изучить использование RELAX NG или Schematron для проверки Вашего XML. Эти языки гораздо более выразительны, что облегчает их чтение и делает их более мощными в тех вещах, которые вы можете проверить. (Обязательно пропустите XML-схему, которая широко считается беспорядком.)


можно использовать xsd.exe (часть visual studio) для создания XML-схемы для данного XML-файла.


вы можете использовать следующую ссылку для создания схемы в интернете, предоставляя только данные xml. http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx


вы можете скачать JetBrains IDEA community edition, который является бесплатным. Он имеет встроенные инструменты для генерации ГТП и схемы:

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

может быть, не идеально, но это что-то.


вот программа, которая работала для меня DTDGenerator. Вам нужно скомпилировать его с Java, но он работает хорошо. Я удивлен отсутствием свободного программного обеспечения для языка, который был вокруг в течение длительного времени, но это бесплатно под Mozilla Public License версии 1.0.


Xmlspy альтовой имеет генератор схем DTD / XML.

сгенерированная схема DTD / XML обычно требует небольшой настройки. Например, инструмент может перечислять список атрибутов или элементов, когда вы "имели в виду", чтобы разрешить любое значение. Вы только даете ему образец своего проблемного пространства,и он должен перейти от конкретного к общему. По этой причине я не теряю форму, когда он не читает мои мысли.

Я считаю, что созданный dtd или схема отправная точка. Это лучше, чем катить его вручную с нуля. То есть, если вы начинаете с существующих XML-документов.

даже если вы не собираетесь использовать сгенерированный dtd, это довольно хороший способ обойти структуру набора незнакомых XML-документов.


редактор XMLMax создаст XSD из XML-файла. Бесплатная пробная версия (без регистрации / небольшой файл загрузки) сделает это за вас. Если вы хотите сделать это в коде, .NET framework имеет класс XmlSchemaInference, который автоматически создает XSD из xml-файла.


просто используется http://www.freeformatter.com/xsd-generator.html для создания xsd из xml-файла. Она также имеет много других возможностей форматирования!


вы можете попробовать Trang или Instance to Schema Tool (часть XMLBeans).

Я поставил их в тест с 1Gb XML-файлом. Вот результаты:

Trang:

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

Instance to Schema Tool:

max memory [kB] - 5,993,240
time [MM:SS] - 7:36