Compartir a través de


Compatibilidad con enlaces del elemento All

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 de enlace para el elemento <all>.

Sin embargo, no existe ningún medio de especificar el elemento <all> en código de manera que se cree cuando se genere un documento de esquema XML a partir de un conjunto de clases.

Explicación

No existe ningún medio de especificar el elemento <all> en código de manera que se cree cuando se genere un documento de esquema XML a partir de un conjunto de clases.

El elemento <all> proporciona una agrupación de elementos no ordenada. Cada uno de los elementos secundarios puede aparecer una vez o no aparecer.

Al generar código fuente a partir de un documento de esquema XML, Xsd.exe convierte cada elemento secundario del elemento <all> en un campo público. Los campos aparecen en el mismo orden que los elementos secundarios en el esquema XML.

Cuando se genera un documento de esquema XML a partir de un conjunto de clases en un ensamblado, Xsd.exe utiliza el elemento <sequence> en lugar de un elemento <all> para agrupar los elementos secundarios correspondientes a los campos públicos. Se supone que los elementos dentro de un tipo complejo deberían aparecer ordenados, no desordenados.

No use la característica de conservación de orden (el modificador /order en Xsd.exe) al importar esquemas que contienen un elemento <all>.

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="complexInstance" type="MyComplexType"/>
    <xsd:element name="field1" type="xsd:string"/>
    <xsd:element name="field2" type="xsd:string"/>
    <xsd:element name="field3" type="xsd:string"/>

    <xsd:complexType name="MyComplexType">
        <xsd:all>
            <xsd:element ref="field1"/>
            <xsd:element ref="field2"/>
            <xsd:element ref="field3"/>
        </xsd:all>
    </xsd:complexType>
</xsd:schema>

Clase de C# generada a partir del documento del esquema XML anterior:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
 [System.Xml.Serialization.XmlRootAttribute("complexInstance", Namespace="http://example.org/", IsNullable=false)]
public class MyComplexType {
        
    public string field1;
        
    public string field2;
        
    public string field3;
}

Tipo complejo de esquema XML generado a partir de un ensamblado compilado en el código fuente de C# anterior:

<xs:complexType name="MyComplexType">
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="field1" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field2" type="xs:string" />
        <xs:element minOccurs="0" maxOccurs="1" name="field3" type="xs:string" />
    </xs:sequence>
</xs:complexType>

Atributos posibles Compatibilidad de enlace

id

La utilidad Xsd.exe omite el atributo id, que está pensado para proporcionar un identificador único.

maxOccurs

Para el elemento <all>, no es válido ningún valor asociado al atributo maxOccurs que sea distinto de 1. Xsd.exe presenta un error con respecto a un valor no válido.

Vea el atributo Compatibilidad con enlaces del atributo MaxOccurs.

minOccurs

La herramienta Xsd.exe omite el atributo minOccurs cuando se aplica al elemento <all>.

Vea el atributo Compatibilidad con enlaces del atributo MinOccurs.

Posibles elementos primarios: <complexType>, <extension>, <group>, <restriction>

Posibles elementos secundarios: <annotation>, <element>