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

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

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

Однако нельзя указать элемент <all> в коде так, чтобы он создавался при создании документа схемы XML из набора классов.

Объяснение

Невозможно указать элемент <all> в коде так, чтобы он создавался при создании документа схемы XML из набора классов.

Элемент <all> выполняет неупорядоченное группирование элементов. Каждый дочерний элемент может встретиться не более одного раза.

При создании исходного кода из документа схемы XML программа Xsd.exe преобразует каждый дочерний элемент элемента <all> в открытое поле. Поля выстраиваются в том же порядке, что и дочерние элементы в схеме XML.

При создании документа схемы XML из набора классов в сборке программа Xsd.exe использует элемент <sequence> вместо элемента <all> для группирования дочерних элементов в соответствии с открытыми полями. Предполагается, что элементы сложного типа должны располагаться по порядку, а не беспорядочно.

Не используйте функцию сохранения порядка (ключ /order для программы Xsd.exe) при импорте схем, содержащих элемент <all>.

Пример

Входной документ схемы XML:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
    <xsd:element name="complexInstance" type="MyComplexType"/>
    <xsd:element name="field1" type="xsd:string"/>
    <xsd:element name="field2" type="xsd:string"/>
    <xsd:element name="field3" type="xsd:string"/>

    <xsd:complexType name="MyComplexType">
        <xsd:all>
            <xsd:element ref="field1"/>
            <xsd:element ref="field2"/>
            <xsd:element ref="field3"/>
        </xsd:all>
    </xsd:complexType>
</xsd:schema>

Класс C#, созданный на основе приведенного выше документа схемы XML:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
 [System.Xml.Serialization.XmlRootAttribute("complexInstance", Namespace="http://example.org/", IsNullable=false)]
public class MyComplexType {
        
    public string field1;
        
    public string field2;
        
    public string field3;
}

Сложный тип схемы XML, созданный из сборки, скомпилированной на основе предыдущего исходного кода C#:

<xs:complexType name="MyComplexType">
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="field1" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field2" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field3" type="xs:string" />
    </xs:sequence>
</xs:complexType>

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

id

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

maxOccurs

Для элемента <all> любое значение атрибута maxOccurs, кроме 1, недопустимо. Программа Xsd.exe сообщает об ошибке из-за недопустимого значения.

См. описание атрибута Поддержка привязки атрибута MaxOccurs.

minOccurs

Программа Xsd.exe не обрабатывает атрибут minOccurs, если он применен к элементу <all>.

См. описание атрибута Поддержка привязки атрибута MinOccurs.

Возможные родительские элементы: <complexType>, <extension>, <group>, <restriction>

Возможные дочерние элементы: <annotation>, <element>