Инструмент, который может объединить много 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...
- открыть .xsd, о котором вы говорите...
- пункт меню с именем (дизайн схемы) имеет элемент с именем ( сплющить схему).
- щелкните по нему. ( он спросит куда сохранить новый файл... Я просто создаю выходную папку или что-то.
Это, кажется, работает просто отлично.
просто добавить .\ префикс с именем last .xsd (schema) файл и заключите его в запятые e.g".\последний.XSD-файл." Выходной класс будет создан с последним именем файла схемы.