Prise en charge de la liaison de l'attribut Nillable
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'attribut nillable.
Explication
Lorsque l'attribut nillable a la valeur true
dans une déclaration <element>, un attribut xsi:nil peut apparaître dans un élément conforme dans une instance de document XML. (Le préfixe xsi est généralement utilisé pour l'espace de noms de l'instance du schéma XML, http://www.w3.org/2001/XMLSchema-instance.)
La valeur true
affectée à l'attribut xsi:nil dans un élément XML spécifie explicitement que l'élément n'a aucun contenu, soit aucun élément enfant ou corps de texte. La classe XmlSerializer assimile une valeur true
pour l'attribut nil à une référence null (Nothing en Visual Basic). Consultez l'attribut xsi:nil pour savoir comment la classe XmlSerializer sérialise et désérialise l'attribut nil et connaître les cas spéciaux.
Si un élément est déclaré avec la valeur nillable="false"
ou aucun attribut nillable, un attribut nil ne peut pas apparaître correctement dans un élément d'instance correspondant, quelle que soit sa valeur.
Génération de l'attribut nillable à partir du code
Lors de la génération d'un document de schéma XML à partir d'un ensemble de classes dans un assembly, Xsd.exe ne crée pas d'attribut nillable pour un membre d'un type valeur Nullable. En effet, une référence null ne peut jamais être affectée à un type valeur (Nothing).
Pour un objet d'un type référence, Xsd.exe vérifie la valeur de la propriété IsNullable de certains attributs XML. Si la propriété IsNullable a la valeur true
, Xsd.exe crée un attribut nillable et lui affecte la valeur true
. La propriété IsNullable est utilisée par certaines classes d'attributs XML. La propriété apparaît comme suit :
Voici un exemple d'utilisation :
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public string NameNullable;
À partir de ce code, Xsd.exe génère la déclaration d'élément XSD suivante :
<xs:element minOccurs="1" maxOccurs="1" name="NameNullable" nillable="true" type="xs:string" />
Si la propriété IsNullable a la valeur true
et qu'au moment de l'exécution, une référence null a été affectée à l'objet applicable (Nothing), la classe XmlSerializer génère un attribut xsi:nil avec la valeur true
.
La propriété IsNullable doit avoir la valeur true
pour un attribut appliqué à un type valeur Nullable.
Pour les types référence, la valeur de la propriété IsNullable détermine également la valeur de l'attribut <minOccurs> d'un élément element. Une valeur true
affectée à IsNullable génère la valeur 1
pour minOccurs ; sinon, la valeur est 0
. Consultez l'attribut minOccurs.
Dans d'autres circonstances, Xsd.exe génère également un paramètre nillable="true"
dans une déclaration <element> lorsqu'une propriété IsNullable n'a pas explicitement la valeur true
.
Génération de code à partir de l'attribut nillable
Lorsqu'il trouve un paramètre nillable="true"
, Xsd.exe génère un paramètre IsNullable=true
pour l'attribut connexe à XML approprié qui s'applique à la classe ou au membre généré. Pour les types valeur, les types Nullable seront générés.
Éléments conteneurs possibles : <element>
Voir aussi
Référence
Prise en charge de la liaison de l'attribut Xsi:nil
System.Xml.Schema.XmlSchemaElement.IsNillable