Partager via


Prise en charge de la liaison de l'attribut Value

Le .NET Framework prend en charge la liaison partielle pour l'attribut value.

L'outil Xsd.exe traduit l'attribut value d'une facette <enumeration> en membre enum .NET Framework si la restriction d'énumération est appliquée à un type basé sur une chaîne. Sinon, il n'existe aucune liaison entre les facettes du schéma XML et les définitions de classe dans le .NET Framework.

Explication

Le langage XSD fournit plusieurs mécanismes pour dériver de nouveaux types simples en appliquant des contraintes sur les valeurs des types simples de base. Ces contraintes sont appelées facettes et sont définies comme enfants de l'élément <restriction> dans une définition <simpleType> (ou <simpleContent>) localisée via simpleType/restriction/facetName XPath, où facetName correspond à la facette donnée. L'attribut value de l'élément facette spécifie une valeur appropriée à la facette.

Attribut value dans les énumérations basées sur une chaîne

L'outil Xsd.exe traduit l'attribut value d'une facette <enumeration> en membre enum .NET Framework si la restriction d'énumération est appliquée à un type de données basé sur une chaîne. Le type de données est spécifié via l'attribut base de l'élément <restriction>. Consultez l'élément <enumeration> pour obtenir la liste des types de données de schéma XML intégrés que l'outil Xsd.exe interprète comme des chaînes.

Une valeur d'énumération doit prétendre au titre de nom de constante valide ou être convertie en nom de constante par Xsd.exe. La valeur d'énumération suivante en est un exemple :

<xsd:enumeration value="IRISH CREAM" />

Cette valeur est convertie en membre enum qui suit :

[System.Xml.Serialization.XmlEnumAttribute("IRISH CREAM")]
IRISHCREAM,

L'espace vide est supprimé pour obtenir un nom de constante valide et un attribut XmlEnumAttribute est appliqué au membre enum. Le paramètre d'attribut modifie la valeur d'énumération de schéma XML qui est utilisée pour cette valeur enum. La valeur par défaut est la valeur enum elle-même, dans le cas présent, IRISHCREAM. Pour une valeur d'énumération de schéma XML qui prétend déjà au titre de nom de constante valide, l'attribut XmlEnum est omis.

Alors que le .NET Framework ne traduit pas d'énumération XSD numérique en définition enum, il traduit une énumération XSD de chaîne dont les valeurs sont des nombres. La définition de type simple suivante crée une liaison avec un type enum car elle indique base="xsd:string" :

<xsd:simpleType name="Primes">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="2" />
        <xsd:enumeration value="3" />
        <xsd:enumeration value="5" />
        <xsd:enumeration value="7" />
        <xsd:enumeration value="11" />
        <xsd:enumeration value="13" />
        <xsd:enumeration value="17" />
    </xsd:restriction>
</xsd:simpleType>

Le type enum suivant est généré :

public enum Primes { 
    [System.Xml.Serialization.XmlEnumAttribute("2")]
    Item2,
    [System.Xml.Serialization.XmlEnumAttribute("3")]
    Item3,
    [System.Xml.Serialization.XmlEnumAttribute("5")]
    Item5,
    [System.Xml.Serialization.XmlEnumAttribute("7")]
    Item7,
    [System.Xml.Serialization.XmlEnumAttribute("11")]
    Item11,
    [System.Xml.Serialization.XmlEnumAttribute("13")]
    Item13,
    [System.Xml.Serialization.XmlEnumAttribute("17")]
    Item17,
}

L'attribut XmlEnum est de nouveau utilisé pour substituer la liaison par défaut de la valeur xsd:enumeration à une valeur d'énumération de schéma XML.

Autres utilisations de l'attribut value

À l'exception des énumérations basées sur des types de données de liaison de chaîne, il n'existe aucune liaison entre les restrictions de type simple utilisant les facettes du schéma XML et les définitions de classe du .NET Framework. Cela signifie ce qui suit (à l'exception des énumérations basées sur une chaîne) :

  • Lors de la génération de code source à partir d'un document de schéma XML, Xsd.exe ignore les restrictions sur les types simples ; il génère simplement le type .NET Framework correspondant au type simple de base.

  • La classe XmlSerializer ignore ces restrictions lors de la sérialisation des objets vers XML et de la désérialisation à partir de XML.

Pour le modèle d'objet de schéma, l'espace de noms System.Xml.Schema a une classe XmlSchemaFacet abstraite avec une propriété Value. Les types dérivés de XmlSchemaFacet pour chacune des facettes de restriction possibles peuvent être utilisés afin de créer par programme un modèle d'objet de schéma qui restreint via des facettes.

Éléments conteneurs possibles : toutes les facettes de restriction

Voir aussi

Référence

Value

Footer image

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