Инструмент, который может объединить много файлов XSD в один? - PullRequest
20 голосов
/ 05 октября 2010

Мне нужно создать XML-сериализатор классов примерно для 65 файлов XSD, для которых я использую XSD.EXE от Microsoft для генерации кода C # ...

Однако я продолжаю сталкиваться с ограничением символов Window CMD в результирующем выходном файле (в котором XSD.EXE объединяет имя каждого включенного XSD): «Указанный путь, имя файла или оба являются слишком длинными. имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов. "

Короче говоря, кажется, что единственный способ получить все это для проверки и генерации - это объединить все XSD (не ссылаясь на include / import, чего не делает XSD.EXE в любом случае разрешите расположение схемы) в одно большое.

Скажите, пожалуйста, что для этого существует инструмент ...

Ответы [ 5 ]

21 голосов
/ 08 апреля 2013

Что вы можете сделать, это создать еще один новый файл с именем file.xsd, содержащий все имена схем в нем, а затем уловка заключается в том, чтобы назвать последний файл схемы с префиксом. \.

File.xsd

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateClasses language='CS' namespace='MyNamespace'>
        <schema>First.xsd</schema>
        <schema>Second.xsd</schema>
        <!-- more schema files here -->
        <schema>.\Third.xsd</schema>
    </generateClasses>
</xsd>

Теперь запустите команду «xsd.exe /p:file.xsd / classes», и вы получите сгенерированный файл класса:)

7 голосов
/ 09 августа 2011

Для будущих ссылок еще один инструмент, разработанный для рефакторинга XML-схемы: QTAssistant - я связан с ним.

Чтобы прояснить ваш вопрос и, надеюсь, помочь другим ... Одна вещь, которая не может быть достигнута по вашей просьбе, состоит в том, что нельзя отменять ссылки на импорт: файл XSD связан с одной схемой XML, которая не позволяетболее одного целевого пространства имен на элемент xsd: schema.

xsd: include может быть "встроенным";поскольку файлы должны иметь одно и то же целевое пространство имен или соответствовать подходу к проектированию пространства имен «хамелеон», возможно объединить содержимое файла с другим.

xsd: import не может быть «встроенным» ...если вы не рефакторинг целевых пространств имен, а также.Однако это не приведет к созданию эквивалентного набора схем.

Если у вас есть полностью определенный набор схем XML, созданный для 65 файлов XSD, например, с 10 пространствами имен, «канонический» набор повторно проанализированных файлов схем XML имеетв нем должно быть не менее 10 файлов.

5 голосов
/ 06 октября 2010

Я нашел инструмент (в основном XSLT) для таких вещей: инструмент для выравнивания XML-схем Пола Киля , но я еще не получил его в свои руки.

Другие источники говорят, что такие инструменты, как Oxygen XML Editor и XMLSpy тоже могут это сделать, но я не могу понять, как.

-> http://www.oxygenxml.com/xml_schema_editor.html#xml_schema_flatten

В моем случае я решил проблему с помощью другого обходного пути: укоротил имя каждого входного XSD, чтобы общее выходное имя XSD.EXE, которое вы не можете выбрать, было ниже предела 260 символов.

3 голосов
/ 14 января 2015

Просто добавьте префикс. \ С именем последнего файла .xsd (схема) и заключите его в запятую, например, ". \ Last.xsd".Выходной класс будет создан с последним именем файла схемы.

3 голосов
/ 22 октября 2011

Я только начал использовать Altova XML Spy (1 день)

Чтобы свести схему .xsd в один документ ..., который все еще будет проверяться, и предоставить ссылки для щелчка в eclipse ...

  1. откройте .xsd, о котором вы говорите ...
  2. Элемент меню, называемый (Схема проектирования), имеет элемент, называемый (Свести схему).
  3. Нажмите на нее. (он спросит вас, где сохранить новый файл ... Я просто создаю выходную папку или что-то в этом роде.

Кажется, все работает нормально.

...