Share via


Prise en charge de la liaison de l'attribut fixed

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 fournit la prise en charge de liaison pour l'attribut fixed.

Explication

L'attribut fixed peut apparaître dans une déclaration <element> ou <attribute> pour définir une valeur de constante que l'élément ou l'attribut doit avoir dans un document XML conforme. L'attribut peut également apparaître avec tout élément de facette de restriction, sauf <enumeration> et <pattern>, auquel cas la valeur true empêche la dérivation de modifier la valeur de facette associée.

Dans la mesure où le .NET Framework n'incorpore pas de facettes de restriction pour la sérialisation ou la liaison d'un type de données (à l'exception de l'énumération basée sur une chaîne), l'attribut fixed ainsi que la facette dans laquelle il apparaît sont ignorés. Le modèle d'objet de schéma fournit une classe XmlSchemaFacet de base avec une propriété IsFixed.

Si l'attribut fixed apparaît dans un élément **<element>< ou >**attribut, Xsd.exe initialise statiquement le champ à la valeur par défaut, comme dans l'exemple suivant :

public int age = -1;

D'après le schéma XML, la valeur de l'attribut fixed doit correspondre à un type simple de schéma XML. Pour plus d'informations sur la manière dont Xsd.exe traduit des valeurs fixes/par défaut pour les types simples, consultez l'attribut default.

Pour les éléments et les attributs, le modèle d'objet de schéma représente l'attribut fixed avec la propriété FixedValue des classes XmlSchemaAttribute et XmlSchemaElement.

Example

Document de schéma XML d'entrée :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="http://example.org/" xmlns="http://example.org/" elementFormDefault="qualified">
    <xsd:element name="FamilyDog" type="FamilyDogType"/>

    <xsd:complexType name="FamilyDogType">
        <xsd:sequence>
            <xsd:element name="name" type="xsd:string" fixed="Spot"/>
            <xsd:element name="birthdate" type="xsd:date" />
        </xsd:sequence>
        <xsd:attribute name="gender" type="GenderType" fixed="UNKNOWN"/>
        <xsd:attribute name="fixed" type="xsd:boolean" fixed="false"/>
        <xsd:attribute name="breed" type="xsd:string" fixed="Swedish Vallhund"/>
    </xsd:complexType>
    
    <xsd:simpleType name="GenderType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="FEMALE" />
            <xsd:enumeration value="MALE" />
            <xsd:enumeration value="UNKNOWN" />
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

Classes C# générées à partir du document de schéma XML précédent :

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute("FamilyDog", Namespace="http://example.org/", IsNullable=false)]
 public class FamilyDogType {
        
     public string name = "Spot";
        
    [System.Xml.Serialization.XmlElementAttribute(DataType="date")]
    public System.DateTime birthdate;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public GenderType gender = GenderType.UNKNOWN;
        
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool genderSpecified;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public bool @fixed = false;
        
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool fixedSpecified;
        
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string breed = "Swedish Vallhund";
    
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
public enum GenderType {        
    FEMALE,    
    MALE,
    UNKNOWN,
}

Document 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="FamilyDog" type="tns:FamilyDogType" />
  <xs:complexType name="FamilyDogType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" fixed="Spot"/>
      <xs:element minOccurs="1" maxOccurs="1" name="birthdate" type="xs:date" />
    </xs:sequence>
    <xs:attribute name="gender" type="tns:GenderType" />
    <xs:attribute name="fixed" type="xs:boolean" />
    <xs:attribute name="breed" type="xs:string" />
  </xs:complexType>
  <xs:simpleType name="GenderType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="FEMALE" />
      <xs:enumeration value="MALE" />
      <xs:enumeration value="UNKNOWN" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

Éléments conteneurs possibles : <attribute>, <element>, plusieurs facettes de restriction

Voir aussi

Référence

System.Xml.Schema.XmlSchemaAttribute.FixedValue
System.Xml.Schema.XmlSchemaElement.FixedValue
System.Xml.Schema.XmlSchemaFacet.IsFixed