Prise en charge de la liaison de l'élément Group
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 <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.)
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: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 à 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>