Compatibilidad con enlaces del atributo Fixed

.NET Framework proporciona compatibilidad con enlaces para el atributo fixed.

Explicación

El atributo fixed puede aparecer en una declaración <element> o <attribute> con el fin de establecer un valor constante que deberían tener el elemento o atributo en un documento XML de conformidad. El atributo también puede aparecer con cualquier elemento relacionado con aspectos de restricción, con la excepción de <enumeration> y <pattern>, en cuyo caso un valor de true evita que la derivación cambie el valor de aspecto de acompañamiento.

.NET Framework no incorpora aspectos relacionados con restricciones para la serialización o el enlace de tipos de datos (con la excepción de una enumeración basada en cadena), de tal manera que el atributo fixed aparezca omitido junto con el aspecto en el que aparece. El Modelo de objetos de esquemas proporciona una clase XmlSchemaFacet base con una propiedad IsFixed.

Si el atributo fixed aparece en un elemento <element> o <attribute>, Xsd.exe inicializa estáticamente el campo en el valor predeterminado, tal y como se muestra en el siguiente ejemplo:

public int age = -1;

Según el esquema XML, el valor del atributo fixed debe ser un tipo simple del esquema XML. Para obtener detalles sobre cómo Xsd.exe traduce los valores fixed y default con relación a tipos simples, vea el atributo default.

En el caso de elementos y atributos, el Modelo de objetos de esquemas representa el atributo fixed con la propiedad FixedValue de las clases XmlSchemaAttribute y XmlSchemaElement.

Ejemplo

Documento de esquema XML de entrada:

<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>

Las clases de C# generadas a partir del documento del esquema XML anterior:

[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,
}

Documento de esquema XML generado a partir de un ensamblado compilado con el código fuente de C# anterior:

<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>

Posibles elementos contenedores: <attribute>, <element>, varios aspectos de la restricción

Consulte también

Referencia

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

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.