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

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

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

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

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

5 ответов


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

.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:файл.xsd / classes " и вы получаете файл класса, сгенерированный :)


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

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

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

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

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


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

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

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

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


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

чтобы сгладить .схема xsd в один документ... это все равно будет проверять и предоставлять ссылки на click in eclipse...

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

Это, кажется, работает просто отлично.


просто добавить .\ префикс с именем last .xsd (schema) файл и заключите его в запятые e.g".\последний.XSD-файл." Выходной класс будет создан с последним именем файла схемы.