Partager via


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

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 partielle pour l'élément <attributeGroup>.

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 <attributeGroup> directement dans la classe qui correspond à la définition <complexType> contenant la référence.

Explication

L'élément <attributeGroup> permet au Concepteur de schémas de définir globalement un groupe d'attributs 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'attributs 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 <attributeGroup> via l'attribut ref directement dans la classe qui correspond à la définition <complexType> contenant la référence. Pour chaque attribut, un champ public est généré. Chaque champ public apparaît avec l'attribut XmlAttributeAttribute qui peut également être exprimé sous la forme raccourcie XmlAttribute.

Un développeur qui souhaite éviter de définir directement le même groupe de champs de liaison d'attributs 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. Chaque propriété ou champ public doit apparaître avec l'attribut XmlAttribute ; dans le cas contraire, la propriété ou le champ est interprété comme un élément dans un type complexe, et non comme un attribut.

Example

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:attributeGroup name="version">
      <xsd:attribute name="changeNumber" type="xsd:int" use="required"/>
      <xsd:attribute name="instanceId" type="xsd:string" use="required"/>
    </xsd:attributeGroup>
    <xsd:complexType name="keyInfo">
      <xsd:sequence>
        <xsd:element name="key" type="xsd:string"/>
      </xsd:sequence>
      <xsd:attributeGroup ref="version" />
    </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;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int changeNumber;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    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:schema xmlns:tns="http://example.org/" elementFormDefault="qualified" targetNamespace="http://example.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="key" type="tns:keyInfo" />
  <xs:complexType name="keyInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="changeNumber" type="xs:int" />
    <xs:attribute name="instanceId" type="xs:string" />
  </xs:complexType>
</xs:schema>

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.

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 d'attributs 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 <attributeGroup> de l'attribut ref dans un groupe d'attributs globalement déclaré dans la classe qui correspond à la définition <complexType> contenant la référence. Pour chaque attribut d'un <attributeGroup>, un champ public est produit avec l'attribut System.Xml.Serialization.XmlAttributeAttribute, qui peut également être exprimé sous la forme raccourcie XmlAttribute.

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

Éléments enfants possibles :  <annotation>, <anyAttribute>, <attribute>, <attributeGroup>

Voir aussi

Référence

XmlSchemaAttributeGroup
XmlSchemaAttributeGroupRef