Partager via


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

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

Lors de la génération du code source à partir d'un document de schéma XML, Xsd.exe développe chaque référence <group> directement dans la classe qui correspond à la définition <complexType> contenant la référence.

Explication

L'élément <group> permet au Concepteur de schémas de définir globalement un groupe d'éléments et de réutiliser ensuite ce groupe dans un nombre illimité de types complexes, via les références.

Le .NET Framework n'a pas d'idiome pour exprimer des groupes d'éléments dans le code. À la place, lors de la génération du code source à partir d'un document de schéma XML, Xsd.exe développe chaque référence <group> via l'attribut ref directement dans la classe qui correspond à la définition <complexType> contenant la référence. Pour chaque élément, un champ public est généré.

Un développeur qui souhaite éviter de définir directement le même groupe de champs de liaison d'élément ou de propriétés dans plusieurs classes peut créer manuellement une classe de base et faire en sorte que les classes représentant les types complexes de schéma XML héritent de cette classe de base.

Le langage XSD permet à une référence <group> d'apparaître avec un attribut maxOccurs ayant une valeur supérieure à 1. Pour importer correctement des schémas avec plusieurs groupes, utilisez l'option de la ligne de la commande /order sur Xsd.exe. (Lors de la génération de code source à partir d'un tel schéma XML, par défaut, Xsd.exe génère incorrectement un tableau pour chaque élément du groupe. Une fois l'option /order activée, un tableau sera généré pour tous les membres du groupe, avec plusieurs attributs XmlElementAttribute, un pour chaque membre de groupe.)

Exemple

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

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
    <xsd:group name="version">
      <xsd:sequence>
        <xsd:element name="changeNumber" type="xsd:int"/>
        <xsd:element name="instanceId" type="xsd:string"/>
      </xsd:sequence>
    </xsd:group>
    <xsd:complexType name="keyInfo">
      <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
        <xsd:group ref="version" />
      </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="key" type="keyInfo"/>
</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("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
        
    public string key;
        
    public int changeNumber;
        
    public string instanceId;
}

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

<xs:complexType name="keyInfo">
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    <xs:element minOccurs="1" maxOccurs="1" name="changeNumber" type="xs:int" />
    <xs:element minOccurs="0" maxOccurs="1" name="instanceId" 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

Lorsque la génération du code source à partir d'un document de schéma XML, avec les groupes ayant beaucoup de maxOccurs supérieurs à 1, utilisez le commutateur de ligne de commande /order.

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

minOccurs

Lors de la génération du code source à partir d'un document de schéma XML, Xsd.exe ignore l'attribut minOccurs s'il est appliqué à l'élément <group>.

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

name

Dans la mesure où l'utilitaire Xsd.exe développe le contenu de l'élément <attributeGroup> de manière anonyme, le nom du groupe d'attributs est ignoré.

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

ref

Le .NET Framework n'a pas d'idiome pour exprimer des groupes dans le code. À la place, lors de la génération du code source à partir d'un document de schéma XML, Xsd.exe développe directement chaque référence <group> de l'attribut ref dans un groupe globalement déclaré dans la classe qui correspond à la définition <complexType> contenant la référence. Pour chaque élément d'une référence <group>, un champ public est généré.

Éléments parents possibles : <choice>, <complexType>, <extension>, <redefine>, <restriction>, <schema>, <sequence>

Éléments enfants possibles : <all>, <annotation>, <choice>, <sequence>

Voir aussi

Référence

XmlSchemaGroup
XmlSchemaGroupRef

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.