Compartir a través de


Nivel de compatibilidad con esquemas

En esta sección se describen los detalles sobre el nivel de compatibilidad con el esquema.

El esquema admite directamente lo siguiente:

  • Secuencias de elementos.
  • Derivación de tipos de elementos.
  • Opciones simples de elementos (aquellos que se asignan a una unión etiquetada).
  • Tipos básicos definidos por formato binario XSD/.NET, incluidos los intervalos (min/max).
  • Compatibilidad sencilla con cualquier elemento (sin restricciones en el tipo de elemento).
  • Elementos y atributos opcionales con valores predeterminados.
  • Repetir elementos con rangos (min/max).
  • Elementos nillables.

El esquema no admite lo siguiente directamente (lo que implica el comportamiento de "reserva"):

  • Tipos básicos definidos por el usuario.
  • Opciones más complicadas.
  • Rechazar atributos desconocidos.
  • Recorrido de ida y vuelta atributos desconocidos.
  • Compatibilidad más complicada con cualquier elemento.
  • La construcción all.
  • Key/keyref.

A continuación se muestra un desglose detallado de la compatibilidad con distintos componentes de esquema. Se compara con el contrato de datos en WCF porque la similitud en la funcionalidad. Se describirá la diferencia.

Por lo general, para los comportamientos de reserva:

  • los atributos se revierten a WS_STRING;
  • el contenido del elemento se revierte a WS_XML_BUFFER.
  • complexType se revierte a la estructura que contiene un campo de WS_XML_BUFFER.
  • Los tipos simples se revierten a WS_STRING.

wsutil genera advertencias para los componentes de esquema que actualmente no son totalmente compatibles. Es posible que la aplicación tenga que realizar una comprobación adicional para esos componentes. Wsutil de horas extra se puede mejorar para controlar algunas de las características que se admiten actualmente en tiempo de ejecución, como la compatibilidad con valores predeterminados. wsutil también se puede mejorar junto con la serialización para admitir otras características como abstract. El número de componentes de esquema no admitidos se puede reducir con el tiempo.

Documento de esquema general

Definición global que podría afectar a las definiciones insertadas en el esquema. Estos son atributos globales que son aplicables a todas las definiciones del esquema.

atributos <xs:schema>

  • attributeFromDefault Ignored.
  • blockDefault Ignored.
  • elementFormDefault Ignored. Esto es diferente de dataContract, ya que los elementos no calificados se admiten en tiempo de ejecución.
  • finalDefault Ignored. No hay compatibilidad con el lenguaje C para el concepto de final.
  • id Ignored.
  • targetNamespace Admitido y asignado al espacio de nombres del servicio.
  • versión omitida.

contenido de> xs:schema de <

  • include Supported; wsutil requiere que toda la definición necesaria esté disponible como archivos de entrada durante el tiempo de compilación.
  • redefinido Ignored. wsutil no admite esto.
  • import Supported; wsutil requiere que toda la definición necesaria esté disponible como archivos de entrada durante el tiempo de compilación.
  • simpleType Supported: consulte la sección tipo simple a continuación.
  • complexType Supported: consulte la sección "complexType"
  • grupo omitido.
  • attributeGroup Ignored.
  • element Supported; se asigna a definiciones de elementos globales.
  • atributo Admitido; se asigna a las definiciones de atributos globales.
  • notación omitida

Tipo complejo

Tipo complejo, representado por <xs:complexType>, podría ser restricción de tipo simple o tipo complejo, extensión de tipo simple, matrices o estructura. Se ha observado que, en extensión de tipos simples, no hay herencia ni compatibilidad con xsi:type.

atributos de <xs:complexType>

  • abstract Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • bloque Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • final Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • id Ignored.
  • mixed Generar advertencia sobre la característica no admitida, reserva a la estructura con WS_XML_BUFFER si es true.
  • name Admitido y asignado al nombre del tipo de estructura.

<contenido de> xs:complexType

Esta es la definición de tipo para la estructura. No se admite la restricción complexContent.

  • complexContent Admite la extensión de contenido complejo. Se asigna a la herencia de estructuras.
  • grupo Reserva actualmente en estructura con WS_XML_BUFFER campo. Se puede admitir según la partícula debajo.
  • opción admitida como unión. Esto no se admite en el contrato de datos.
  • secuencia admitida: se asigna a campos de una estructura
  • atributo admitido con una excepción de "prohibido". reserva a la estructura con WS_XML_BUFFER si está "prohibido".
  • attributeGroup admitido: se asigna a la secuencia de atributos
  • anyAttribute Ignored
  • AttributeGroupRef Supported: se asigna a la secuencia de atributos.
  • GroupRef Reserva actualmente en la estructura con WS_XML_BUFFER campo. Se puede admitir según el grupo subyacente.
  • Cualquier compatible, se asigna a XML_BUFFER
  • (en blanco) se admite la asignación a una descripción de estructura vacía sin ninguna estructura generada.

< > xs:sequence en un tipo complejo: contenido

wsutil solo admite completamente la secuencia de minOccurs = 1 y maxOccurs = 1; de lo contrario, el tipo complejo se reserva actualmente en WS_XML_BUFFER. Se puede admitir como matriz de estructuras.

  • element Supported; cada instancia se asigna a un campo de la estructura.
  • Reserva de grupo; complexType se reserva a WS_XML_BUFFER.
  • Toda reserva; complexType se reserva a WS_XML_BUFFER.
  • opción admitida; asignar al campo de unión.
  • reserva de secuencia; complexType se reserva a WS_XML_BUFFER.
  • cualquier compatible; asignado a XML_BUFFER.
  • (en blanco) admitido; complexType puede ser una estructura vacía si no hay ningún atributo.

Elementos

< >xs:element pueden producirse en tres contextos.

  • Puede producirse dentro de un <xs:sequence>, que describe un campo de una estructura normal. En este caso, el atributo maxOccurs debe ser 1. El campo es opcional si minOccurs es 0.
  • Puede producirse dentro de un <xs:sequence>, que describe un campo de una matriz. En este caso, el atributo maxOccurs debe ser mayor que 1 o "sin enlazar".
  • Puede producirse dentro de un> xs:schema de <como descripción del elemento global.

<xs:element> dentro de un <xs:sequence> o <xs:choice> como campo de una estructura

  • ref Compatible; resuelto para hacer referencia al elemento global.
  • name Supported, se asigna al nombre del campo.
  • type Supported, se asigna al tipo de campo. Para obtener más información, vea "Asignación de tipos". Si no se especifica (y el elemento no contiene un tipo anónimo), se asume xs:anyType.
  • bloque Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • default Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • se ha corregido Generar advertencia sobre la característica no admitida, sin cambios en la generación de código.
  • formulario omitido. Nuestra capa de serialización admite formularios calificados y no calificados.
  • id Ignored.
  • maxOccurs se asigna a un único campo de datos si es igual a 1. se asigna a un campo de matriz (elemento de repetición) si maxOccurs es mayor que 1.
  • minOccurs si es 0, las opciones de campo se establecen en FIELD_OPTIONAL, si no se establece nillable.
  • nillable El campo es nillable. Consulte de serialización para obtener más detalles.

<xs:element> como elemento global: atributos

Los atributos minOccurs y maxOccurs no son válidos como descripción del elemento global. La aplicación puede usar la descripción del elemento generado en capas de serialización o capas de canal directamente.

  • abstract Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • bloque Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • default Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • final Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • se ha corregido Generar advertencia sobre la característica no admitida, sin cambios en la generación de código.
  • id Ignored.
  • name Supported- map to name of the global element description, and it is the base for the anonymous type when specified.
  • Nillable Ignored-application debe llamar con la marca derecha.
  • substitutionGroup reserva a structure con WS_XML_BUFFER si se establece. wsutil no admite substitutionGroup.
  • type Supported and map to the type of the element.

<xs:element> como elemento global: contents

  • simpleType Supported; se asigna a la definición de tipo.
  • complexType compatible; se asigna a un tipo complejo.
  • unique Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código. wsutil no admite restricciones de elemento.
  • key Generar advertencia sobre la característica no admitida, sin cambios en la generación de código. wsutil no admite restricciones de elemento.
  • keyref Genera una advertencia sobre la característica no admitida, sin ningún cambio en la generación de código. wsutil no admite restricciones de elemento.
  • (en blanco) Soportado; el elemento sin especificación de tipo se trata como xs:anyType.

Tipos simples

atributos <xs:simpleType>

  • Final Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • Id Ignored
  • Nombre admitido, se asigna al nombre de tipo.

contenido de <xs:simpleType>

  • Restricción admitida, se asigna al tipo de enumeración o intervalo. Consulte la sección "restricciones xs:simpleType".
  • Lista Generar advertencia sobre la característica no admitida, reserva a XML_BUFFER.
  • Union Genera una advertencia sobre la característica no admitida, reserva a XML_BUFFER.

Restricción de tipo simple

Se permiten ciertas facetas en tipos enteros y tipos de cadenas para permitir la compatibilidad con el rango y la enumeración.

compatibilidad con enumeraciones

<xs:enumeración> restricción de tipo simple para el tipo base de cadena se trata como tipo de enumeración. En este caso, el atributo Base DEBE ser de tipo de cadena. En el caso de enumeración, se omiten todas las demás facetas.

range on simple type support (intervalo en compatibilidad con tipos simples)

Algunas facetas son compatibles con tipos simples que admiten intervalos efectivos permitidos en el tipo. A continuación se muestran restricciones para tipos enteros y tipos float/double. Los tipos simples con otras facetas se revierten al tipo de WS_STRING

  • minExclusive Supported
  • minInclusive Supported
  • maxExclusive Supported
  • maxInclusive Supported
  • totalDigits Genera una advertencia sobre la característica no admitida, sin ningún cambio en la generación de código.
  • fractionDigits Genera una advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • length Generar advertencia sobre la característica no admitida, sin ningún cambio en la generación de código.
  • minLength Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • maxLength Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • enumeración Generar advertencia sobre la característica no admitida, no hay ningún cambio en la generación de código.
  • whiteSpace Genera una advertencia sobre la característica no admitida, sin cambios en la generación de código.
  • patrón Generar advertencia sobre la característica no admitida, sin ningún cambio en la generación de código.
  • (en blanco) Soportado.

minLength y maxLength en la cadena no se admiten actualmente, pero es una característica deseable para admitir.

Herencia

Wsutil admite la herencia de tipos complejos, es decir, una estructura puede heredar de otra estructura, similar a la herencia de interfaz en C++. Esto se hace a través de <xs:complexContentExtension>. <xs:simpleContentExtension> se admite, pero se genera como estructura sin formato con tipo base como primer campo en lugar de herencia de tipos.

Asignación de tipos o primitivas

Los identificadores deben normalizarse al traducir de NCNames en XML. Las cadenas son nillables; los tipos de puntero son nillables; los tipos enteros y float/double son nillables y defaultValue se establece en 0.

Tabla que muestra la asignación entre los tipos XSD y los tipos de datos de Zafiro.