Compatibilidad con enlaces del elemento SimpleContent
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 con enlaces para el elemento <simpleContent>.
La extensión de contenido simple se expresa siempre totalmente a través de definiciones de clase en .NET Framework. Xsd.exe no reconoce la restricción de contenido simple.
Explicación
El lenguaje de definición de esquemas XML utiliza el elemento <simpleContent> para definir un tipo complejo que no contiene elementos secundarios. Un tipo complejo con contenido simple (ya se trate de atributos, texto principal o ambos) deriva de un tipo base a través de extensión o restricción, mediante un elemento <extension> o un elemento <restriction> bajo el elemento <simpleContent>.
Al generar código fuente de un documento de esquema XML, Xsd.exe crea un campo público de un tipo correspondiente al tipo base, que especifica el atributo base del elemento <extension>. Para obtener información sobre enlaces entre los tipos simples integrados del esquema XML y los tipos de .NET Framework, consulte "Compatibilidad de tipos de datos entre tipos de esquema XML (XSD) y tipos de .NET Framework” en la Guía de desarrollador de software de .Net Framework.
La restricción y la extensión de contenido simple se representan en el Modelo de objetos de esquemas a través de las clases XmlSchemaSimpleContentExtension y XmlSchemaSimpleContentRestriction, respectivamente, así como de la clase XmlSchemaSimpleContent.
Los objetos de estas clases se pueden usar para crear mediante programación un modelo de objetos de esquemas, que se corresponde con un documento XSD, que defina tipos complejos con contenido simple.
Ejemplo
El siguiente código es el 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="Distance">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:float">
<xsd:attribute name="units" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Clase de C# generada a partir del documento de esquema XML anterior.
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://example.org/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://example.org/", IsNullable=false)]
public class Distance {
[System.Xml.Serialization.XmlAttributeAttribute()]
public string units;
[System.Xml.Serialization.XmlTextAttribute()]
public System.Single Value;
}
Tipo complejo y elemento de esquema XML generados a partir de un ensamblado compilado en el código fuente de C# anterior.
<xs:element name="Distance" type="tns:Distance" />
<xs:complexType name="Distance">
<xs:simpleContent>
<xs:extension base="xs:float">
<xs:attribute name="units" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Atributos posibles | Compatibilidad de enlace |
---|---|
id |
La utilidad Xsd.exe omite el atributo id, que está pensado para proporcionar un identificador único. |
Posibles elementos primarios: <complexType>
Posibles elementos secundarios: <annotation>, <extension>, <restriction>