Уровень поддержки схемы
В этом разделе рассматриваются сведения о уровне поддержки схемы.
Схема напрямую поддерживает следующее:
- Последовательности элементов.
- Производные типы элементов.
- Простые варианты элементов (те, которые сопоставляются с помеченным объединением).
- Базовые типы, определенные XSD/ двоичным форматом .NET, включая диапазоны (min/max).
- Простая поддержка любого элемента (без ограничений на тип элемента).
- Необязательные элементы и атрибуты со значениями по умолчанию.
- Повторяющиеся элементы с диапазонами (min/max).
- Неиллируемые элементы.
Схема не поддерживает следующее прямо (что означает "резервное" поведение):
- Определяемые пользователем базовые типы.
- Более сложный выбор.
- Отклонение неизвестных атрибутов.
- Обход неизвестных атрибутов.
- Более сложная поддержка любого элемента.
- Все конструкции.
- Key/keyref.
Ниже приведен подробный раздел о поддержке различных компонентов схемы. Он сравнивается с контрактом данных в WCF, так как сходство в функциональных возможностях. Разница будет описана.
Как правило, для резервного поведения:
- атрибуты возвращаются в WS_STRING;
- Содержимое элемента возвращается в WS_XML_BUFFER.
- complexType возвращается в структуру, содержащую поле WS_XML_BUFFER.
- Простые типы возвращаются в WS_STRING.
wsutil создает предупреждения для компонентов схемы, которые в настоящее время не полностью поддерживаются. Возможно, приложению потребуется выполнить дополнительную проверку для этих компонентов. Сверток wsutil можно улучшить для обработки некоторых функций, которые в настоящее время поддерживаются во время выполнения, например поддержка значений по умолчанию. wsutil также можно улучшить вместе с сериализацией для поддержки других функций, таких как абстрактные. Количество неподдерживаемых компонентов схемы может быть сокращено с течением времени.
Общий документ схемы
Глобальное определение, которое может повлиять на внедренные определения в схеме. Это глобальные атрибуты, применимые ко всем определениям в схеме.
атрибуты <xs:schema>
- атрибутFromDefault игнорируется.
- blockDefault Ignored.
- элементFormDefault Игнорируется. Это отличается от dataContract, так как неквалифицированные элементы поддерживаются в среде выполнения.
- finalDefault Игнорируется. Нет поддержки языка C для концепции окончательного.
- идентификатор игнорируется.
- targetNamespace Поддерживается и сопоставлено с пространством имен службы.
- версия игнорируется.
содержимое <xs:schema>
- include Supported; wsutil требует, чтобы все необходимые определения были доступны в качестве входных файлов во время компиляции.
- переопределить игнорируется. wsutil не поддерживает это.
- импорт поддерживаемых; wsutil требует, чтобы все необходимые определения были доступны в качестве входных файлов во время компиляции.
- SimpleType Supported— см. раздел "Простой тип" ниже.
- complexType Supported— см. раздел "ComplexType"
- группа игнорируется.
- attributeGroup Игнорируется.
- элемент Поддерживается; сопоставляется с определениями глобальных элементов.
- поддерживаемый атрибут; сопоставляется с определениями глобальных атрибутов.
- нотация игнорируется
Сложный тип
Сложный тип, представленный <xs:complexType>, может быть ограничением простого типа или сложного типа, расширения простого типа, массивов или структуры. Обратите внимание, что в расширении простых типов отсутствует наследование и поддержка xsi:type.
атрибуты <xs:complexType>
- абстрактное предупреждение о неподдерживаемой функции без изменений в создании кода.
- Блокировать создание предупреждения о неподдерживаемой функции без изменений в создании кода.
- окончательное предупреждение о неподдерживаемой функции, без изменений в создании кода.
- идентификатор игнорируется.
- смешанная ошибка создания предупреждения о неподдерживаемой функции, откат к структуре с WS_XML_BUFFER, если значение true.
- имя поддерживаемого и сопоставленного с именем типа структуры.
<содержимое xs:complexType>
Это определение типа для структуры. ограничение complexContent не поддерживается.
- complexContent Support сложное расширение содержимого. Сопоставляется с наследованием структуры.
- Группа в настоящее время откат к структуре с полем WS_XML_BUFFER. Может поддерживаться в соответствии с частицей под ней.
- выбор, поддерживаемый в качестве объединения. Это не поддерживается в контракте данных.
- Поддержка последовательности — сопоставляется с полями структуры
- атрибут, поддерживаемый одним исключением из запрещенных. возврат к структуре с WS_XML_BUFFER, если "запрещено".
- поддержка атрибутов — сопоставляется с последовательностью атрибутов
- anyAttribute Игнорируется
- AttributeGroupRef Supported — сопоставляется с последовательностью атрибутов.
- GroupRef Currentlyback to structure with WS_XML_BUFFER field. Может поддерживаться в соответствии с группой под ней.
- Любая поддерживаемая, сопоставляется с XML_BUFFER
- (пусто) поддерживается сопоставление с пустым описанием структуры без создания структуры.
<xs:sequence> в сложном типе: содержимое
wsutil поддерживает только полную последовательность minOccurs = 1 и maxOccurs = 1; В противном случае сложный тип в настоящее время возвращается в WS_XML_BUFFER. Его можно поддерживать в виде массива структур.
- элемент Поддерживается; каждый экземпляр сопоставляется с полем в структуре.
- Резервный резерв группы; сложный тип является резервным для WS_XML_BUFFER.
- Все резервные; сложный тип является резервным для WS_XML_BUFFER.
- поддерживается выбор; сопоставление с полем объединения.
- резервный вариант последовательности; сложный тип является резервным для WS_XML_BUFFER.
- любой поддерживаемый; сопоставлен с XML_BUFFER.
- (пусто) поддерживается; complexType может быть пустой структурой, если атрибуты отсутствуют.
Азы
<xs:element>может выполняться в трех контекстах.
- Это может произойти в <xs:sequence>, описывая поле регулярной структуры. В этом случае атрибут maxOccurs должен иметь значение 1. Поле является необязательным, если minOccurs равно 0.
- Он может возникать в <xs:sequence>, описывая поле массива. В этом случае атрибут maxOccurs должен быть больше 1 или несоотвлен.
- Это может произойти в <xs:schema> как глобальное описание элемента.
<xs:element> в <xs:sequence> или <xs:choice> в виде поля в структуре
- ref Supported; разрешено ссылаться на глобальный элемент.
- имя поддерживается, сопоставляется с именем поля.
- Тип "Поддерживается", сопоставляется с типом поля. Дополнительные сведения см. в разделе "Сопоставление типов". Если элемент не указан (и элемент не содержит анонимный тип), предполагается xs:anyType.
- Блокировать создание предупреждения о неподдерживаемой функции без изменений в создании кода.
- По умолчанию создайте предупреждение о неподдерживаемой функции, не изменяйте создание кода.
- Исправлено предупреждение о неподдерживаемой функции, без изменений в создании кода.
- форма игнорируется. Наш уровень сериализации поддерживает как квалифицированные, так и неквалифицированные формы.
- идентификатор игнорируется.
- maxOccurs сопоставляется с одним полем данных, если равно 1. Он сопоставляется с полем массива (повторяющимся элементом), если maxOccurs больше 1.
- MinOccurs, если значение 0, для параметра поля задано значение FIELD_OPTIONAL, если не задано значение nillable.
- nillable Поле является nillable. Дополнительные сведения см. в сериализации.
<xs:element> как глобальный элемент: атрибуты
атрибуты minOccurs и maxOccurs недопустимы как глобальное описание элемента. Приложение может использовать созданное описание элемента непосредственно в слоях сериализации или канала.
- абстрактное предупреждение о неподдерживаемой функции без изменений в создании кода.
- Блокировать создание предупреждения о неподдерживаемой функции без изменений в создании кода.
- По умолчанию создайте предупреждение о неподдерживаемой функции, не изменяйте создание кода.
- окончательное предупреждение о неподдерживаемой функции, без изменений в создании кода.
- Исправлено предупреждение о неподдерживаемой функции, без изменений в создании кода.
- идентификатор игнорируется.
- имя поддерживается— сопоставляется с именем глобального описания элемента, и он является основой анонимного типа при указании.
- nillable Ignored-application должен вызываться с правильным флагом.
- Функция подстановки в структуру с WS_XML_BUFFER, если задано. wsutil не поддерживает подстановку Группы.
- Тип "Поддерживаемый" и сопоставление с типом элемента.
<xs:element> как глобальный элемент: содержимое
- simpleType Supported; сопоставляется с определением типа.
- поддерживается complexType; сопоставляется с сложным типом.
- уникальное предупреждение о неподдерживаемой функции без изменений в создании кода. wsutil не поддерживает ограничения элементов.
- key Generate warning about unsupported feature, no change to code generation. wsutil не поддерживает ограничения элементов.
- keyref Создать предупреждение о неподдерживаемой функции, не изменяйте создание кода. wsutil не поддерживает ограничения элементов.
- (пусто) Поддержанный; элемент без спецификации типа обрабатывается как xs:anyType.
Простые типы
атрибуты <xs:simpleType>
- Окончательное предупреждение создания неподдерживаемой функции без изменений в создании кода.
- Идентификатор игнорируется
- Имя поддерживается, сопоставляется с именем типа.
содержимое <xs:simpleType>
- Поддерживается ограничение, сопоставляется с типом перечисления или диапазоном. См. раздел "Ограничения xs:simpleType".
- Список предупреждений о неподдерживаемой функции, откат к XML_BUFFER.
- Объединение создает предупреждение о неподдерживаемой функции, откат к XML_BUFFER.
Ограничение простого типа
Некоторые аспекты разрешены в целочисленных типах и строках, чтобы разрешить диапазон и поддержку перечисления.
Поддержка перечисления
<xs:перечисление> ограничение простого типа для базового типа строки рассматривается как тип перечисления. В этом случае базовый атрибут ДОЛЖЕН быть строковым типом. В случае перечисления все остальные аспекты игнорируются.
диапазон для поддержки простых типов
Некоторые аспекты поддерживаются в простых типах, которые поддерживают эффективный диапазон для типа. Ниже приведено ограничение для целочисленных типов и типов float/double. Простые типы с другими аспектами возвращаются к типу WS_STRING
- minExclusive Поддерживается
- MinInclusive Поддерживается
- maxExclusive Поддерживается
- поддерживается maxInclusive
- totalDigits Generate warning about unsupported feature, no change to code generation.
- fractionDigits Создает предупреждение о неподдерживаемой функции, никаких изменений в создании кода.
- Length Generate warning about unsupported feature, no change to code generation.
- MinLength Generate warning about unsupported feature, no change to code generation.
- MaxLength Generate warning about unsupported feature, no change to code generation.
- перечисление Создает предупреждение о неподдерживаемой функции, не изменяя создание кода.
- whiteSpace Generate warning about unsupported feature, no change to code generation.
- Шаблон создает предупреждение о неподдерживаемой функции, изменения в создании кода не изменяются.
- (пусто) Поддержанный.
minLength и maxLength в строке в настоящее время не поддерживается, но является желательной функцией для поддержки.
Наследство
Wsutil поддерживает наследование сложных типов, т. е. структуру, которая может наследоваться от другой структуры, аналогичной наследованию интерфейса в C++. Это делается с помощью <xs:complexContentExtension>. <xs:simpleContentExtension> поддерживается, но создается как обычная структура с базовым типом в качестве первого поля вместо наследования типов.
Сопоставление типов и примитивов
Идентификаторы необходимо нормализовать при переводе из NCNames в XML. Строки являются неостроимыми; Типы указателей являются неоставимыми; целочисленные типы и float/double являются nillable, и значение defaultValue имеет значение 0.