Nível de suporte ao esquema
Esta seção aborda os detalhes sobre o nível de suporte ao esquema.
O esquema dá suporte direto ao seguinte:
- Sequências de elementos.
- Derivação de tipos de elemento.
- Opções simples de elementos (aqueles que são mapeados para uma união marcada).
- Tipos básicos definidos pelo formato binário XSD/.NET, incluindo intervalos (min/max).
- Suporte simples para qualquer elemento (sem restrições no tipo de elemento).
- Elementos e atributos opcionais com valores padrão.
- Elementos repetidos com intervalos (min/max).
- Elementos anuláveis.
O esquema não dá suporte diretamente ao seguinte (o que implica o comportamento de "fallback"):
- Tipos básicos definidos pelo usuário.
- Escolhas mais complicadas.
- Rejeitando atributos desconhecidos.
- Arredondar atributos desconhecidos de tropeço.
- Suporte mais complicado para qualquer elemento.
- O constructo all.
- Key/keyref.
Veja a seguir um detalhamento do suporte a diferentes componentes de esquema. Ele é comparado com o contrato de dados no WCF porque a similaridade na funcionalidade. A diferença será descrita.
Em geral, para comportamentos de fallback:
- os atributos são apoiados para WS_STRING;
- o conteúdo do elemento é apoiado em WS_XML_BUFFER.
- complexType são compatíveis com a estrutura que contém um campo de WS_XML_BUFFER.
- Tipos simples são respaldados em WS_STRING.
O wsutil gera avisos para componentes de esquema que atualmente não têm suporte total. O aplicativo pode precisar fazer verificação adicional para esses componentes. As horas extras do wsutil podem ser aprimoradas para lidar com alguns dos recursos com suporte atualmente no runtime, como o suporte a valor padrão. o wsutil também pode ser aprimorado junto com a serialização para dar suporte a outros recursos, como abstrato. O número de componentes de esquema sem suporte pode ser reduzido ao longo do tempo.
O documento de esquema geral
Definição global que pode afetar definições inseridas no esquema. Esses são atributos globais aplicáveis a todas as definições no esquema.
<Atributos xs:schema>
- attributeFromDefault Ignorado.
- blockDefault Ignorado.
- elementFormDefault Ignorado. Isso é diferente de dataContract, pois há suporte para elementos não qualificados em runtime.
- finalDefault Ignorado. Não há suporte à linguagem C para o conceito de final.
- id Ignorado.
- targetNamespace Com suporte e mapeado para o namespace de serviço.
- versão Ignorada.
<xs:schema> contents
- inclua Com suporte; wsutil requer que toda a definição necessária esteja disponível como arquivos de entrada durante o tempo de compilação.
- redefinir Ignorado. o wsutil não dá suporte a isso.
- importação com suporte; wsutil requer que toda a definição necessária esteja disponível como arquivos de entrada durante o tempo de compilação.
- simpleType Com suporte - consulte a seção tipo simples abaixo.
- complexType Com suporte - consulte a seção 'complexType'
- grupo Ignorado.
- attributeGroup Ignorado.
- elemento Com suporte; mapeia para definições de elemento global.
- atributo Com suporte; mapeia para definições de atributo global.
- notação ignorada
Tipo complexo
Tipo complexo, representado por <xs:complexType>, pode ser restrição de tipo simples ou tipo complexo, extensão de tipo simples, matrizes ou estrutura. Observe que, na extensão de tipos simples, não há herança nem suporte a xsi:type.
<Atributos xs:complexType>
- abstract Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- bloquear Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- final Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- id Ignorado.
- mixed Gerar aviso sobre o recurso sem suporte, fallback para estrutura com WS_XML_BUFFER se verdadeiro.
- nome Com suporte e mapeado para o nome do tipo de estrutura.
<Conteúdo xs:complexType>
Essa é a definição de tipo para estrutura. Não há suporte para a restrição complexContent.
- complexContent Suporte extensão de conteúdo complexo. Mapeia para estruturar a herança.
- grupo Atualmente, fallback para estrutura com WS_XML_BUFFER campo. Pode ser suportado de acordo com a partícula embaixo.
- opção com suporte como união. Não há suporte para isso no contrato de dados.
- sequência com suporte – mapeia para campos de uma estrutura
- atributo com suporte com uma exceção de 'proibido'. fallback para estrutura com WS_XML_BUFFER se 'proibido'.
- attributeGroup com suporte - mapeia para a sequência de atributos
- anyAttribute Ignorado
- AttributeGroupRef Com suporte – mapeia para a sequência de atributos.
- GroupRef Atualmente, fallback para estrutura com WS_XML_BUFFER campo. Pode ter suporte de acordo com o grupo abaixo.
- Qualquer Compatível, mapeia para XML_BUFFER
- (em branco) mapa com suporte para descrição de struct vazia sem struct gerado.
<xs:sequence> em um tipo complexo: conteúdo
wsutil só dá suporte total à sequência de minOccurs = 1 e maxOccurs = 1; caso contrário, o tipo complexo é atualmente respaldado para WS_XML_BUFFER. Ele pode ter suporte como matriz de estruturas.
- elemento Com suporte; cada instância é mapeada para um campo na estrutura.
- Fallback de grupo; o complexType é fallback para WS_XML_BUFFER.
- Todo o fallback; o complexType é fallback para WS_XML_BUFFER.
- opção com suporte; mapeie para o campo união.
- fallback de sequência; o complexType é fallback para WS_XML_BUFFER.
- qualquer com suporte; mapeado para XML_BUFFER.
- (em branco) com suporte; complexType poderá ser uma estrutura vazia se não houver atributos.
Elementos
<xs:element>pode ocorrer em três contextos.
- Pode ocorrer em uma <xs:sequence>, descrevendo um campo de um struct regular. Nesse caso, o atributo maxOccurs deve ser 1. O campo será opcional se minOccurs for 0.
- Pode ocorrer dentro de uma <xs:sequence>, descrevendo um campo de uma matriz. Nesse caso, o atributo maxOccurs deve ser maior que 1 ou "não associado".
- Pode ocorrer em um <xs:schema> como uma descrição de elemento global.
<xs:element> em um <xs:sequence> ou <xs:choice> como um campo em uma estrutura
- ref com suporte; resolvido para fazer referência ao elemento global.
- name Com suporte, mapeia para o nome do campo.
- tipo Com suporte, mapeia para o tipo de campo. Para obter mais informações, consulte 'Mapeamento de tipo'. Se não for especificado (e o elemento não contiver um tipo anônimo), xs:anyType será assumido.
- bloquear Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- default Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- corrigido Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- formulário Ignorado. Nossa camada de serialização dá suporte a formulários qualificados e não qualificados.
- id Ignorado.
- maxOccurs é mapeado para um único campo de dados se for igual a 1. ele será mapeado para um campo de matriz (elemento de repetição) se maxOccurs for maior que 1.
- minOccurs if 0, the field options is set to FIELD_OPTIONAL, if nillable is not set.
- nillable O campo é anulável. Consulte Serialização para obter mais detalhes.
<xs:element> como elemento global: atributos
Os atributos minOccurs e maxOccurs são inválidos como descrição do elemento global. O aplicativo pode usar a descrição do elemento gerado diretamente na camada de serialização ou nas camadas de canal.
- abstract Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- bloquear Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- default Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- final Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- corrigido Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- id Ignorado.
- name Supported - mapeie para o nome da descrição do elemento global e é a base para o tipo anônimo quando especificado.
- O aplicativo ignorado anulável precisa chamar com o sinalizador direito.
- substitutionGroup fallback para estrutura com WS_XML_BUFFER se definido. O wsutil não dá suporte a substitutionGroup.
- digite Com suporte e mapeie para o tipo do elemento.
<xs:element> como elemento global: contents
- simpleType com suporte; mapeia para definição de tipo.
- complexType com suporte; mapeia para um tipo complexo.
- unique Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código. wsutil não dá suporte a restrições de elemento.
- key Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código. wsutil não dá suporte a restrições de elemento.
- keyref Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código. wsutil não dá suporte a restrições de elemento.
- (em branco) Suportado; O elemento sem especificação de tipo é tratado como xs:anyType.
Tipos simples
<Atributos xs:simpleType>
- Aviso de Geração Final sobre o recurso sem suporte, nenhuma alteração na geração de código.
- ID ignorada
- Nome Com suporte, mapeia para o nome do tipo.
<conteúdo xs:simpleType>
- Restrição Com suporte, mapeia para o tipo ou intervalo de enumeração. Consulte a seção "restrições xs:simpleType".
- Lista Gerar aviso sobre o recurso sem suporte, fallback para XML_BUFFER.
- Union Gerar aviso sobre o recurso sem suporte, fallback para XML_BUFFER.
Restrição de tipo simples
Determinadas facetas são permitidas em tipos integrais e tipos de cadeias de caracteres para permitir suporte a intervalos e enumerações.
Suporte à enumeração
<A restrição de tipo simples xs:enumeration para o tipo base de cadeia de caracteres é tratada como tipo de enumeração> . Nesse caso, o atributo Base DEVE ser do tipo de cadeia de caracteres. No caso de enumeração, todas as outras facetas são ignoradas.
intervalo no suporte de tipo simples
Algumas facetas são compatíveis com tipos simples que dão suporte a intervalos efetivamente permitidos no tipo. Veja a seguir a restrição para tipos integrais e tipos float/double. Tipos simples com outras facetas são respaldados para WS_STRING tipo
- minExclusive com suporte
- minInclusive com suporte
- maxExclusive com suporte
- maxInclusive Com suporte
- totalDigits Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- fractionDigits Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- length Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- minLength Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- maxLength Gerar aviso sobre o recurso sem suporte, nenhuma alteração na geração de código.
- enumeração Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- whiteSpace Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- padrão Gerar aviso sobre o recurso sem suporte, sem alteração na geração de código.
- (em branco) Suportado.
No momento, não há suporte para minLength e maxLength na cadeia de caracteres, mas é um recurso desejável para dar suporte.
Herança
O Wsutil dá suporte à herança de tipos complexos, ou seja, uma estrutura pode herdar de outra estrutura, semelhante à herança de interface em C++. Isso é feito por meio <de xs:complexContentExtension>. <Xs:simpleContentExtension> tem suporte, mas é gerado como estrutura simples com tipo base como primeiro campo em vez de herança de tipo.
Mapeamento de tipo/primitivo
Os identificadores precisam ser normalizados ao traduzir de NCNames em XML. As cadeias de caracteres são anuláveis; os tipos de ponteiro são anuláveis; tipos integrais e float/double são anuláveis e defaultValue é definido como 0.