Share via


Prise en charge de la liaison de l'élément All

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

Le .NET Framework prend en charge la liaison pour l'élément <all>.

Toutefois, vous ne pouvez pas spécifier l'élément <all> dans le code afin qu'il soit créé lors de la génération d'un document de schéma XML à partir d'un ensemble de classes.

Explication

Vous ne pouvez pas spécifier l'élément <all> dans le code afin qu'il soit créé lors de la génération d'un document de schéma XML à partir d'un ensemble de classes.

L'élément <all> fournit un regroupement non ordonné d'éléments. Chacun des éléments enfants peut apparaître une fois ou ne pas apparaître du tout.

Lors de la génération de code source à partir d'un document de schéma XML, Xsd.exe traduit chaque élément enfant de l'élément <all> en champ public. Les champs apparaissent dans le même ordre que les éléments enfants dans le schéma XML.

Lors de la génération d'un document de schéma XML à partir d'un ensemble de classes dans un assembly, Xsd.exe utilise un élément <sequence> plutôt qu'un élément <all> pour regrouper les éléments enfants qui correspondent aux champs publics. Les éléments dans un type complexe doivent normalement apparaître dans l'ordre, et non dans le désordre.

N'utilisez pas la fonctionnalité de conservation d'ordre (le commutateur /order sur Xsd.exe) lors de l'importation de schémas qui contiennent un élément <all>.

Exemple

Document de schéma XML d'entrée :

<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>

Classe C# générée à partir du document de schéma XML précédent :

[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;
}

Type complexe de schéma XML généré à partir d'un assembly compilé depuis la source C# précédente :

<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>

Attributs possibles Prise en charge de la liaison

id

L'utilitaire Xsd.exe ignore l'attribut id qui a pour but de fournir un identificateur unique.

maxOccurs

Pour l'élément <all>, toute valeur pour l'attribut maxOccurs autre que 1 n'est pas valide. Xsd.exe signale une erreur pour une valeur non valide.

Consultez l'attribut Prise en charge de la liaison de l'attribut MaxOccurs.

minOccurs

L'outil Xsd.exe ignore l'attribut minOccurs lorsqu'il est appliqué à l'élément <all>.

Consultez l'attribut Prise en charge de la liaison de l'attribut MinOccurs.

Éléments parents possibles :  <complexType>, <extension>, <group>, <restriction>

Éléments enfants possibles :  <annotation>, <element>