Compartir a través de


Compatibilidad con enlaces del elemento Restriction

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

La única restricción de tipo para la que .NET Framework proporciona un enlace totalmente expresivo es la enumeración de tipos simples basados en cadenas.

Explicación

El lenguaje de definición de esquemas XML permite la derivación de nuevos tipos a partir de tipos base por medio de extensión y restricción. La extensión siempre se usa para derivar tipos complejos. La restricción se puede usar para derivar tanto tipos complejos como simples, aunque se utiliza normalmente para los tipos simples.

Las extensiones de tipos del esquema XML siempre se expresan completamente a través de definiciones de clase en .NET Framework, pero la única restricción de tipo para la que existe un enlace es la enumeración de un tipo simple, que se localiza a través de XPath simpleType/restriction/enumeration. Además, el elemento <enumeration> solo se enlaza cuando se aplica a tipos simples basados en cadenas.

Para todos los demás elementos secundarios del elemento simpleType/restriction (o cuando se aplica la enumeración a un tipo base que no es de cadena), se cumple lo siguiente:

  • Al generar código fuente de un documento de esquema XML, Xsd.exe omite la restricción; se limita producir el tipo de .NET Framework que corresponda al tipo simple base.

  • La clase XmlSerializer no tiene en cuenta la restricción cuando se serializan objetos a XML y se deserializan desde XML.

Para un tipo complejo, si la restricción implica contenido complejo, a través de XPath complexType/complexContent/restriction, Xsd.exe genera una clase vacía que hereda de una clase base. La clase XmlSerializer no tiene en cuenta la restricción. Xsd.exe no reconoce una restricción que implica contenido simple, a través de XPath complexType/simpleContent/restriction.

Aunque la restricción tiene una compatibilidad con enlaces limitada, se representa totalmente en el Modelo de objetos de esquemas. La clase XmlSchemaSimpleTypeRestriction es para la restricción de tipo simple y las clases XmlSchemaComplexContentRestriction y XmlSchemaSimpleContentRestriction son para las dos clases de restricción de tipo complejo. Además, tanto XmlSchemaSimpleTypeRestriction como XmlSchemaSimpleContentRestriction tienen una propiedad Facets que puede contener objetos que representen a cualquiera de los elementos secundarios de simpleType/restriction o simpleContent/restriction.

Los objetos de estas clases se pueden usar para crear mediante programación un modelo de objetos de esquemas que emplee cualquier clase de restricción ofrecida en la especificación del esquema XML. Este tipo de modelo se puede serializar a un documento de esquema XML y deserializarse desde éste.

Además, un objeto XmlValidatingReader se puede usar para validar un documento XML de instancia con un esquema XML que utilice restricción.

Atributos posibles Compatibilidad de enlace

base

El elemento <restriction> requiere un atributo base, cuyo valor sea el nombre calificado del tipo de datos base.

Para la definición de tipos simples a través de restricción, el valor del atributo base determina si Xsd.exe reconoce la restricción. Si la base es un tipo de datos de esquema XML que se enlaza a una cadena, Xsd.exe genera un tipo enum. De lo contrario, Xsd.exe genera un campo del tipo de .NET Framework que se enlaza al valor base.

Consulte el texto anterior para conocer el uso del atributo base cuando se definen tipos complejos a través de restricción.

id

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

Posibles elementos primarios: <complexContent>, <simpleContent>, <simpleType>

Posibles elementos secundarios: <all>, <annotation>, <anyAttribute>, <attribute>, <attributeGroup>, <choice>, <enumeration>, <fractionDigits>, <group>, <length>, <maxExclusive>, <maxInclusive>, <maxLength>, <minExclusive>, <minInclusive>, <minLength>, <pattern>, <sequence>, <simpleType>, <totalDigits>, <whiteSpace>

Vea también

Referencia

XmlSchemaComplexContentRestriction
XmlSchemaSimpleContentRestriction
XmlSchemaSimpleTypeRestriction