Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 parcial de enlace al elemento <attributeGroup> .
Al generar código fuente a partir de un documento de esquema XML, Xsd.exe expande cada referencia de <attributeGroup> directamente en la clase correspondiente a la definición de <complexType> que contiene la referencia.
Explicación
El elemento <attributeGroup> permite al diseñador de esquemas definir globalmente un grupo de atributos y, después, volver a usar ese grupo en varios tipos complejos a través de referencias.
.NET Framework no tiene un idioma para expresar los grupos de atributos en código. En cambio, al generar código fuente a partir de un documento de esquema XML, Xsd.exe expande cada referencia <attributeGroup> a través de ref directamente en la clase correspondiente a la definición de <complexType> que contiene la referencia. Para cada atributo se genera un campo público. Cada campo público aparece con el atributo XmlAttributeAttribute, que también se puede expresar con el nombre abreviado de XmlAttribute.
Un programador que no desee tener que definir el mismo grupo de campos de enlace de atributos o propiedades directamente en varias clases podría crear una clase base manualmente y hacer que las clases que representan tipos complejos de esquema XML hereden de la clase base. Cada propiedad o campo público debe aparecer con el atributo XmlAttribute; de lo contrario, se interpreta como un elemento en un tipo complejo, no como un atributo.
Example
Documento de esquema XML de entrada:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.org/" targetNamespace="http://example.org/" elementFormDefault="qualified">
<xsd:attributeGroup name="version">
<xsd:attribute name="changeNumber" type="xsd:int" use="required"/>
<xsd:attribute name="instanceId" type="xsd:string" use="required"/>
</xsd:attributeGroup>
<xsd:complexType name="keyInfo">
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
</xsd:sequence>
<xsd:attributeGroup ref="version" />
</xsd:complexType>
<xsd:element name="key" type="keyInfo"/>
</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("key", Namespace="http://example.org/", IsNullable=false)]
public class keyInfo {
public string key;
[System.Xml.Serialization.XmlAttributeAttribute()]
public int changeNumber;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string instanceId;
}
Tipo complejo de esquema XML generado a partir de un ensamblado compilado en 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="key" type="tns:keyInfo" />
<xs:complexType name="keyInfo">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="key" type="xs:string" />
</xs:sequence>
<xs:attribute name="changeNumber" type="xs:int" />
<xs:attribute name="instanceId" type="xs:string" />
</xs:complexType>
</xs:schema>
Atributos posibles | Compatibilidad de enlace |
---|---|
id |
La utilidad Xsd.exe omite el atributo id, que está pensado para proporcionar un identificador único. |
nombre |
Puesto que la utilidad Xsd.exe expande el contenido del elemento <attributeGroup> de forma anónima, se omite el nombre de grupo del atributo. Vea el atributo Compatibilidad con enlaces del atributo Name. |
ref |
.NET Framework no tiene un idioma para expresar los grupos de atributos en código. En cambio, al generar código fuente a partir de un documento de esquema XML, Xsd.exe expande directamente cada referencia <attributeGroup> del atributo ref a un grupo de atributos declarado globalmente en la clase correspondiente a la definición de <complexType> que contiene la referencia. Para cada atributo de <attributeGroup>, se genera un campo público con el atributo System.Xml.Serialization.XmlAttributeAttribute, que también se puede expresar con el nombre corto XmlAttribute. |
Elementos principales posibles: <attributeGroup>, <complexType>, <extension>, <redefine>, <restriction>, <schema>
Posibles elementos secundarios: <annotation>, <anyAttribute>, <attribute>, <attributeGroup>