Compartir a través de


Compatibilidad con enlaces del atributo Fixed

Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.

.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 facetas 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 faceta de acompañamiento.

.NET Framework no incorpora facetas relacionadas 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 la faceta 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.

Example

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

El documento del esquema XML que se ha generado a partir de un ensamblado compilado con el anterior código fuente C#:

<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>, varias facetas de la restricción

Vea también

Referencia

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