XSD.exe не применяет minOccurs - PullRequest
7 голосов
/ 03 мая 2010

У меня есть простая схема, где я объявляю minOccurs и maxOccurs равными 1. Когда я запускаю XSD.exe, чтобы сгенерировать класс C # и использовать класс в коде; поле не является обязательным. Отсутствует ли какой-то дополнительный шаг? или классы, созданные с использованием XSD.exe, не являются обязательными полями?

любые предложения или идеи будут полезны.

Ответы [ 3 ]

7 голосов
/ 03 мая 2010

Как и инструмент схемы Xml / infer в Visual Studio, всякий раз, когда я использовал XSD.exe, я заканчивал тем, что исправлял часть сгенерированного кода. XSD.exe делает хорошее приближение, но не работает полностью.

Ошибка '1003 * minOccurs / maxOccurs' задокументирована в MSDN.

При генерации исходного кода из Документ схемы XML, Xsd.exe игнорирует атрибут minOccurs, примененный к <выбор>, <последовательность>, <группа>, <все>, и <любые> элементы.

Для элемента Xsd.exe игнорирует атрибут minOccurs, если значение атрибута maxOccurs больше 1 или не ограничено. В этом В этом случае инструмент создает массив тип, соответствующий данным XSD тип. Xsd.exe использует значение атрибут maxOccurs для определения производить ли один экземпляр или массив.

Для элемента Xsd.exe также игнорирует атрибут minOccurs если он применяется к типу данных схемы который конвертируется в .NET Framework ссылочный тип.

Только при соблюдении всех следующих условий действительно ли Xsd.exe использует значение атрибута minOccurs:

Элемент задействован.

Атрибут maxOccurs диктует один экземпляр.

Тип данных преобразуется в значение типа.

1 голос
/ 03 мая 2010

Как бы вы применили произвольный minoccurs в коде? Какие-то утверждения? Я предполагаю, что вы можете сопоставить только «не допускающий обнуление единичный экземпляр» (1: 1) необнуляемый массив (1: много) и их обнуляемые эквиваленты (0; 1) и (0: много)

0 голосов
/ 03 мая 2010

Вы правы, что XSD.EXE не обеспечивает соблюдение требований возникновения. Это как задумано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...