it-swarm-ru.tech

Какие-либо инструменты для генерации схемы XSD из экземпляра документа XML?

Я ищу инструмент, который будет принимать экземпляр документа XML и выводить соответствующую схему XSD.

Я, конечно, признаю, что сгенерированная схема XSD будет ограничена по сравнению с созданием схемы вручную (она, вероятно, не будет обрабатывать необязательные или повторяющиеся элементы или ограничения данных), но, по крайней мере, она может послужить быстрой отправной точкой.

145
Matt Dillard

инструмент вывода Microsoft XSD - хорошее бесплатное решение. Многие инструменты редактирования XML, такие как XmlSpy (упомянутый @Garth Gilmour) или OxygenXML Editor, также имеют эту функцию. Они довольно дорогие, хотя. BizTalk Server также имеет инструмент вывода XSD.

Правка: я только что обнаружил класс .net XmlSchemaInference , поэтому, если вы используете .net, вы должны учитывать это

65
Danimal

Вы можете использовать открытый исходный код и кроссплатформенную опцию: inst2xsd из XMLBeans Apache . Я нахожу это очень полезным и легким.

Просто скачайте, разархивируйте и играйте (требуется Java).

54
Dario

Транг это лучший вариант здесь. Открытый исходный код и кроссплатформенность (хотя Java требуется)

С сайта Trang:

Транг преобразует между различными языками схемы для XML. Поддерживает следующие языки

  • RELAX NG (синтаксис XML)
  • RELAX NG компактный синтаксис
  • DTD XML 1.0
  • W3C XML-схема

Схема, написанная на любом из поддерживаемых языков схемы, может быть преобразована в любой из других поддерживаемых языков схемы, за исключением того, что XML-схема W3C поддерживается только для вывода, но не для ввода.

Транг также может вывести схему из одного или нескольких примеров XML-документов.

Ссылка для скачивания

51
Derferman

В VS2010, если вы загружаете файл XML в редактор, выберите меню XML >> Создать схему.

15
Nathan Donnellan

Также есть XML schema learner , который доступен на Github .

Может потребоваться несколько XML-файлов и извлечь из этих файлов общий XSD .

11
edorian

Если у вас установлен .Net, инструмент для генерации схем и классов XSD уже включен по умолчанию.
Для меня инструмент XSD установлен под следующей структурой. Это может отличаться в зависимости от вашего установочного каталога.

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:]

Обычно классы и схемы, которые генерирует этот инструмент, работают довольно хорошо, особенно если вы собираетесь использовать их на языке .Net

Обычно я беру XML-документ, который мне нужен, протолкну его через инструмент XSD с флагом /o:<your path>, чтобы сгенерировать схему (xsd), а затем протолкну файл xsd обратно через инструмент, используя флаги /classes /L:VB (or CS) /o:<your path>, чтобы получить классы, которые я могу импортировать и использовать в моих повседневных проектах .Net

10
Pat Hermens

Если все, что вам нужно, это XSD, у LiquidXML есть бесплатная версия, которая делает XSD, и имеет графический интерфейс, так что вы можете настроить XSD, если хотите. В любом случае, в настоящее время я пишу свои собственные XSD вручную, но это все благодаря этому приложению.

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

6
Robert Gould

если вы работаете в мире Java - идея intelliJ также имеет обширную поддержку xml, включая генерацию xsd и samle xml из генерации xsd, а с помощью плагинов вы можете получить отладчики xslt. - Особенно приятно, если вы планируете использовать такие инструменты, как jaxb впоследствии.

4
Andreas Petersson

Altova XmlSpy делает это хорошо - вы можете найти обзор здесь

3
Garth Gilmour

Это старая ветка, но я подумал, что было бы полезно опубликовать эту ссылку: только что нашел этот инструмент: xsd-gen Generate XML Schema from XML

и он просто сделал то, что мне было нужно.

3
v_e