Поделиться через


Уровень поддержки схемы

В этом разделе рассматриваются сведения о уровне поддержки схемы.

Схема напрямую поддерживает следующее:

  • Последовательности элементов.
  • Производные типы элементов.
  • Простые варианты элементов (те, которые сопоставляются с помеченным объединением).
  • Базовые типы, определенные 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.

таблице с сопоставлением типов XSD и типов данных Sapphire.