Prise en charge de la liaison de l'élément AttributeGroup
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.
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: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
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.