Поддержка привязки элемента Restriction

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

Платформа .NET Framework обеспечивает частичную поддержку привязки для элемента <restriction>.

Единственное ограничение типов, для которого платформа .NET Framework обеспечивает полностью выразительную привязку, — это перечисление строковых простых типов.

Объяснение

Язык определения схемы XML допускает наследование новых типов от базовых как с помощью расширения, так и ограничения. Расширение всегда используется для наследования сложных типов. Ограничение можно использовать для наследования как сложных, так и простых типов, но как правило оно используется для простых.

Тогда как расширения схемы XML всегда полностью выражаются через определения классов в платформе .NET Framework, единственным ограничением типов, для которого существует привязка, является перечисление простого типа, локализуемое с помощью XPath simpleType/restriction/enumeration. Кроме того, элемент <enumeration> привязывается только в том случае, когда он применяется к строковым простым типам.

Для всех элементов, дочерних по отношению к simpleType/restriction (а также если перечисление применяется к нестроковому базовому типу), действует следующее правило:

  • При создании исходного кода из документа схемы XML программа Xsd.exe игнорирует ограничение; она просто создает тип .NET Framework, соответствующий базовому простому типу.

  • Класс XmlSerializer игнорирует ограничение при сериализации объектов в XML и десериализации из XML.

В случае сложного типа: если ограничение связано со сложным содержимым (через XPath complexType/complexContent/restriction), программа Xsd.exe создает пустой класс, наследующий базовый класс. Класс XmlSerializer игнорирует ограничение. Программа Xsd.exe не распознает ограничение, связанное с простым содержимым (через XPath complexType/simpleContent/restriction).

Ограничение имеет ограниченную поддержку привязки, однако оно полностью представлено в объектной модели схемы. Класс XmlSchemaSimpleTypeRestriction предназначен для ограничений простых типов, а классы XmlSchemaComplexContentRestriction и XmlSchemaSimpleContentRestriction — для обеих категорий ограничений сложных типов. Кроме того, оба класса XmlSchemaSimpleTypeRestriction и XmlSchemaSimpleContentRestriction имеют свойство Facets, способное содержать объекты, представляющие любые элементы, дочерние по отношению к simpleType/restriction или simpleContent/restriction.

С помощью объектов этих классов можно программно создать объектную модель схемы, использующую ограничение любого типа, предусмотренное в спецификации схемы XML. Такую модель можно сериализовать в документ схемы XML и десериализовать из него.

Кроме того, объект XmlValidatingReader можно использовать для проверки документа экземпляра XML на соответствие схеме XML, использующей ограничение.

Возможные атрибуты Поддержка привязки

base

Для элемента <restriction> требуется атрибут base, значением которого является полное имя базового типа данных.

При определении простых типов через ограничение значение атрибута base определяет, распознает ли программа Xsd.exe ограничение. Если базовый тип является типом данных схемы XML с привязкой к строке, программа Xsd.exe создает тип enum. В противном случае программа Xsd.exe создает поле типа .NET Framework с привязкой к значению base.

Сведения об использовании атрибута base при определении сложных типов через ограничение см. выше.

id

Программа Xsd.exe пропускает атрибут id, который предназначен для обеспечения уникального идентификатора.

Возможные родительские элементы: <complexContent>, <simpleContent>, <simpleType>

Возможные дочерние элементы: <all>, <annotation>, <anyAttribute>, <attribute>, <attributeGroup>, <choice>, <enumeration>, <fractionDigits>, <group>, <length>, <maxExclusive>, <maxInclusive>, <maxLength>, <minExclusive>, <minInclusive>, <minLength>, <pattern>, <sequence>, <simpleType>, <totalDigits>, <whiteSpace>

См. также

Справочник

XmlSchemaComplexContentRestriction
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleTypeRestriction