Подтвердить что ты не робот

Инструмент, который может объединить много файлов XSD в один?

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

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

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

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

4b9b3361

Ответ 1

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

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" и вы получите файл класса:)

Ответ 2

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

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

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

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

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

Ответ 3

Я нашел инструмент (в основном XSLT) для этого: Paul Kiel XML Schema Flattener, но у меня нет еще не успел.

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

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

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

Ответ 4

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

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

  • откройте .xsd, о котором вы говорите...
  • Элемент меню, называемый (схема), имеет элемент, называемый (сгладить схему).
  • Щелкните по нему. (он спросит вас, где сохранить новый файл... Я просто создаю папку вывода или что-то в этом роде.

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

Ответ 5

Просто добавьте. \prefix с именем последнего файла .xsd(schema) и вложите его в запятую, например ".\last.xsd". Класс вывода будет сгенерирован с последним именем файла схемы.