Инструмент, который может объединить много файлов XSD в один?
Мне нужно создать классы сериализатора XML примерно для 65 файлов XSD, для которых я использую Microsoft XSD.EXE для генерации кода С#...
Тем не менее, я продолжаю работать с лимитом символов Window CMD в результирующем выходном файле (в котором XSD.EXE объединяет имя каждого включенного XSD): "Указанный путь, имя файла или оба слишком велики. имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символов."
Короче говоря, кажется, что единственный способ получить все эти данные для проверки и генерации вместе - это то, что я могу объединить все XSD (удаление ссылок на include/import, которые XSD.EXE не делает разрешите схему в любом случае) в один большой.
Скажите, пожалуйста, что есть инструмент для этого...
Ответы
Ответ 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". Класс вывода будет сгенерирован с последним именем файла схемы.