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