Как получить DTD (или другой формат спецификации XML) из примеров файлов XML
Вопрос
Вам известен инструмент, который будет выводить DTD (или другой формат спецификации структуры XML) из примера набора файлов XML?
В настоящее время единственная (автоматическая) проверка, которую мы имеем для DSL в кодировке xml, - это унаследованный синтаксический анализатор, написанный на Perl, но по соображениям согласованности весь код perl должен быть перенесен на C-sharp. Р>
Решение
http://www.stylusstudio.com/dtd_generator.html - это настоящее программное обеспечение, реализующее DTD генератор.
http://www.pmg.csail.mit.edu /~chmoh/pubs/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 для сообщества. Он имеет встроенные инструменты для генерации GTD и схем:
http://www.jetbrains.com/idea/webhelp/generating- dtd.html р>
Может быть, не идеально, но это что-то.
Вот программа, которая работала для меня DTDGenerator . Вам нужно скомпилировать его с Java, но он работает хорошо. Я удивлен отсутствием бесплатного программного обеспечения для языка, который существует уже долгое время, но он бесплатный по версии Mozilla Public License Version 1.0.
XMLSpy в Altova имеет генератор схем 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
или Экземпляр в инструмент схемы
(часть XMLBeans ).
Я поставил их в тест с XML-файлом объемом 1 ГБ. Вот результаты:
Trang
:
max memory [kB] - 98,480
time [MM:SS] - 0:24
Экземпляр в инструмент схемы
а>: р>
max memory [kB] - 5,993,240
time [MM:SS] - 7:36