Condividi tramite


Livello di supporto dello schema

Questa sezione illustra i dettagli relativi al livello di supporto dello schema.

Lo schema supporta direttamente quanto segue:

  • Sequenze di elementi.
  • Derivazione dei tipi di elemento.
  • Scelte semplici di elementi (quelle mappate a un'unione contrassegnata).
  • Tipi di base definiti dal formato binario XSD/.NET, inclusi gli intervalli (min/max).
  • Supporto semplice per qualsiasi elemento (nessuna restrizione sul tipo di elemento).
  • Elementi e attributi facoltativi con valori predefiniti.
  • Ripetizione di elementi con intervalli (min/max).
  • Elementi nillable.

Lo schema non supporta direttamente il comportamento "fallback":

  • Tipi di base definiti dall'utente.
  • Scelte più complesse.
  • Rifiuto degli attributi sconosciuti.
  • Round tripping degli attributi sconosciuti.
  • Supporto più complesso per qualsiasi elemento.
  • Costrutto tutto.
  • Key/keyref.

Di seguito è riportata una suddivisione dettagliata del supporto di diversi componenti dello schema. Viene confrontato con il contratto dati in WCF perché la somiglianza nella funzionalità. La differenza verrà descritta.

In genere, per i comportamenti di fallback:

  • gli attributi vengono sottoposti a WS_STRING;
  • il contenuto dell'elemento viene sottoposto a WS_XML_BUFFER.
  • complexType viene eseguito il backup della struttura contenente un campo di WS_XML_BUFFER.
  • I tipi semplici vengono sottoposti a WS_STRING.

wsutil genera avvisi per i componenti dello schema che non sono attualmente completamente supportati. L'applicazione potrebbe dover eseguire una verifica aggiuntiva per tali componenti. È possibile migliorare wsutil overtime per gestire alcune delle funzionalità attualmente supportate in runtime, ad esempio il supporto del valore predefinito. Wsutil può anche essere migliorato insieme alla serializzazione per supportare altre funzionalità come astratte. Il numero di componenti dello schema non supportati può essere ridotto nel tempo.

Documento dello schema complessivo

Definizione globale che potrebbe influire sulle definizioni incorporate nello schema. Questi sono attributi globali applicabili a tutte le definizioni nello schema.

<attributi xs:schema>

  • attributeFromDefault Ignored.
  • blockDefault Ignored.
  • elementFormDefault Ignored. Ciò è diverso da dataContract come elementi non qualificati sono supportati in runtime.
  • finalDefault Ignored. Non esiste alcun supporto per il linguaggio C per il concetto di finale.
  • ID Ignorato.
  • targetNamespace Supportato e mappato allo spazio dei nomi del servizio.
  • versione Ignorata.

<contenuto xs:schema>

  • includere Supportato; wsutil richiede che tutte le definizioni necessarie siano disponibili come file di input durante il tempo di compilazione.
  • ridefinire Ignorato. wsutil non supporta questa operazione.
  • importare supportato; wsutil richiede che tutte le definizioni necessarie siano disponibili come file di input durante il tempo di compilazione.
  • simpleType Supportato: vedere la sezione di tipo semplice seguente.
  • complexType Supportato- vedere la sezione 'complexType'
  • gruppo Ignorato.
  • attributeGroup Ignorato.
  • elemento Supportato; esegue il mapping alle definizioni degli elementi globali.
  • attributo Supportato; esegue il mapping alle definizioni di attributi globali.
  • notazione Ignorata

Tipo complesso

Tipo complesso, rappresentato da <xs:complexType>, può essere restrizione di tipo semplice o tipo complesso, estensione di tipo semplice, matrici o struttura. Si è notato che nell'estensione di tipi semplici non esiste alcuna ereditarietà e nessun supporto xsi:type.

<attributi xs:complexType>

  • genera avviso astratto per la funzionalità non supportata, nessuna modifica alla generazione di codice.
  • blocca Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • generare un avviso finale sulla funzionalità non supportata, senza modificare la generazione di codice.
  • ID Ignorato.
  • genera avviso misto sulla funzionalità non supportata, fallback alla struttura con WS_XML_BUFFER se true.
  • nome supportato e mappato al nome del tipo di struttura.

<contenuto xs:complexType>

Questa è la definizione di tipo per la struttura. la restrizione complexContent non è supportata.

  • complexContent Support complesso estensione del contenuto. Esegue il mapping all'ereditarietà della struttura.
  • group Attualmente fallback alla struttura con WS_XML_BUFFER campo. Può essere supportato in base alla particella sottostante.
  • scelta supportata come unione. Questo non è supportato nel contratto dati.
  • sequenza supportata: esegue il mapping ai campi di una struttura
  • attributo supportato con un'eccezione di 'vietato'. fallback alla struttura con WS_XML_BUFFER se 'vietato'.
  • attributeGroup supportato : esegue il mapping alla sequenza di attributi
  • anyAttribute Ignored
  • AttributeGroupRef Supportato: esegue il mapping alla sequenza di attributi.
  • GroupRef Attualmente fallback alla struttura con campo WS_XML_BUFFER. Può essere supportato in base al gruppo sottostante.
  • Qualsiasi supporto, esegue il mapping a XML_BUFFER
  • (vuoto) supportato mappa a struct struct vuoto descrizione senza struct generato.

<xs:sequence> in un tipo complesso: contenuto

wsutil supporta solo completamente la sequenza di minOccurs = 1 e maxOccurs = 1; in caso contrario, il tipo complesso è attualmente sottoposto a WS_XML_BUFFER. Può essere supportato come matrice di strutture.

  • elemento Supportato; ogni istanza esegue il mapping a un campo nella struttura.
  • Fallback del gruppo; complexType viene eseguito il fallback in WS_XML_BUFFER.
  • Tutto il fallback; complexType viene eseguito il fallback in WS_XML_BUFFER.
  • scelta supportata; eseguire il mapping al campo unione.
  • fallback della sequenza; complexType viene eseguito il fallback in WS_XML_BUFFER.
  • qualsiasi supportato; mappato a XML_BUFFER.
  • (vuoto) supportato; complexType può essere una struttura vuota se non sono presenti attributi.

Elementi

<xs:element>può verificarsi in tre contesti.

  • Può verificarsi all'interno di una <sequenza xs:sequence, descrivendo un campo di uno struct regolare>. In questo caso, l'attributo maxOccurs deve essere 1. Il campo è facoltativo se minOccurs è 0.
  • Può verificarsi all'interno di una <sequenza xs:sequence, descrivendo un campo di una matrice>. In questo caso, l'attributo maxOccurs deve essere maggiore di 1 o "unbounded".
  • Può verificarsi all'interno di uno <schema xs:schema> come descrizione dell'elemento globale.

<xs:element> all'interno di un <oggetto xs:sequence> o <xs:choice> come campo in una struttura

  • ref Supportato; risolto per fare riferimento all'elemento globale.
  • nome Supportato, esegue il mapping al nome del campo.
  • digitare Supportato, esegue il mapping al tipo di campo. Per altre informazioni, vedere "Mapping dei tipi". Se non specificato (e l'elemento non contiene un tipo anonimo), si presuppone xs:anyType.
  • blocca Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • Genera avviso predefinito per la funzionalità non supportata, nessuna modifica alla generazione di codice.
  • correzione Genera avviso relativo alla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • modulo Ignorato. Il livello di serializzazione supporta sia moduli qualificati che non qualificati.
  • ID Ignorato.
  • maxOccurs esegue il mapping a un singolo campo dati se uguale a 1. viene mappato a un campo di matrice (elemento ripetuto) se maxOccurs è maggiore di 1.
  • minOccurs se 0, le opzioni del campo sono impostate su FIELD_OPTIONAL, se nillable non è impostato.
  • nillable Il campo è nillable. Per altre informazioni, vedere Serializzazione .

<xs:element come elemento> globale: attributi

gli attributi minOccurs e maxOccurs non sono validi come descrizione dell'elemento globale. L'applicazione può usare direttamente la descrizione degli elementi generati nei livelli di serializzazione o canale.

  • genera avviso astratto per la funzionalità non supportata, nessuna modifica alla generazione di codice.
  • blocca Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • Genera avviso predefinito per la funzionalità non supportata, nessuna modifica alla generazione di codice.
  • generare un avviso finale sulla funzionalità non supportata, senza modificare la generazione di codice.
  • correzione Genera avviso relativo alla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • ID Ignorato.
  • nome Supportato: esegue il mapping al nome della descrizione dell'elemento globale ed è la base per il tipo anonimo quando specificato.
  • nillable Ignored-application deve chiamare con il flag destro.
  • sostituzioniGroup fallback alla struttura con WS_XML_BUFFER se impostato. wsutil non supporta sostituzioniGroup.
  • digitare Supportato e eseguire il mapping al tipo dell'elemento.

<xs:element come elemento> globale: contenuto

  • simpleType Supportato; esegue il mapping alla definizione del tipo.
  • complexType supportato; esegue il mapping a un tipo complesso.
  • genera avviso univoco sulla funzionalità non supportata, nessuna modifica alla generazione di codice. wsutil non supporta i vincoli degli elementi.
  • key Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice. wsutil non supporta i vincoli degli elementi.
  • keyref Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice. wsutil non supporta i vincoli degli elementi.
  • (vuoto) Supportati; elemento senza specifica di tipo viene considerato come xs:anyType.

Tipi semplici

<attributi xs:simpleType>

  • Genera avviso finale sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • ID ignorato
  • Nome Supportato, esegue il mapping al nome del tipo.

<contenuto xs:simpleType>

  • Restrizione supportata, esegue il mapping al tipo o all'intervallo di enumerazione. Vedere la sezione "xs:simpleType restrictions".
  • Elenco Genera avviso per la funzionalità non supportata, fallback in XML_BUFFER.
  • Genera avviso per la funzionalità non supportata, fallback in XML_BUFFER.

Restrizione di tipo semplice

Alcuni facet sono consentiti nei tipi integrali e nei tipi di stringhe per consentire il supporto di intervalli e enumerazioni.

supporto per l'enumerazione

<la restrizione di tipo semplice xs:enumeration> per il tipo base di stringa viene considerata come tipo di enumerazione. In questo caso, l'attributo Base DEVE essere tipo stringa. Nel caso di enumerazione, tutti gli altri facet vengono ignorati.

intervallo per il supporto di tipi semplici

Alcuni facet sono supportati in tipi semplici supportano in modo efficace l'intervallo consentito nel tipo. Di seguito sono riportate le restrizioni per i tipi integrali e i tipi float/double. I tipi semplici con altri facet vengono sottoposti a backup WS_STRING tipo

  • minExclusive Supportato
  • minInclusive Supportato
  • maxExclusive Supportato
  • maxInclusive Supportato
  • totalDigits Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • frazionDigits Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • lunghezza Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • minLength Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • maxLength Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • enumerazione Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • whiteSpace Genera avviso sulla funzionalità non supportata, nessuna modifica alla generazione di codice.
  • genera avviso per la funzionalità non supportata, nessuna modifica alla generazione di codice.
  • (vuoto) Supportati.

minLength e maxLength su string non è attualmente supportato, ma è una funzionalità auspicabile da supportare.

Ereditarietà

Wsutil supporta l'ereditarietà di tipi complessi, ovvero una struttura può ereditare da un'altra struttura, simile all'ereditarietà dell'interfaccia in C++. Questa operazione viene eseguita tramite <xs:complexContentExtension>. <xs:simpleContentExtension> è supportato, ma viene generato come struttura normale con tipo di base come primo campo anziché ereditarietà dei tipi.

Mapping di tipi/primitivi

Gli identificatori devono essere normalizzati durante la conversione da NCNames in XML. Le stringhe sono nillabili; i tipi di puntatore sono nillabili; i tipi integrali e float/double sono nillable e defaultValue è impostato su 0.

Tabella che mostra il mapping tra tipi XSD e tipi di dati Zaffiro.