Поддержка привязки элемента 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, кроме См. описание атрибута Поддержка привязки атрибута MaxOccurs. |
minOccurs |
Программа Xsd.exe не обрабатывает атрибут minOccurs, если он применен к элементу <all>. См. описание атрибута Поддержка привязки атрибута MinOccurs. |
Возможные родительские элементы: <complexType>, <extension>, <group>, <restriction>
Возможные дочерние элементы: <annotation>, <element>