Schemaunterstützungsebene
In diesem Abschnitt werden die Details zur Ebene der Schemaunterstützung behandelt.
Das Schema unterstützt Direkt Folgendes:
- Sequenzen von Elementen.
- Ableitung von Elementtypen.
- Einfache Auswahl von Elementen (solche, die einer markierten Union zugeordnet sind).
- Grundlegende Typen, die durch das XSD-/.NET-Binärformat definiert werden, einschließlich Bereichen (min/max).
- Einfache Unterstützung für jedes Element (keine Einschränkungen für den Elementtyp).
- Optionale Elemente und Attribute mit Standardwerten.
- Wiederholende Elemente mit Bereichen (min/max).
- Nillierbare Elemente.
Das Schema unterstützt Folgendes nicht direkt (was das "Fallback"-Verhalten impliziert):
- Benutzerdefinierte Basistypen.
- Komplexere Auswahlmöglichkeiten.
- Ablehnen unbekannter Attribute.
- Roundtripping unbekannter Attribute.
- Kompliziertere Unterstützung für jedes Element.
- Das all-Konstrukt.
- Key/keyref.
Im Folgenden finden Sie eine detaillierte Aufschlüsselung der unterstützung verschiedener Schemakomponenten. Es wird mit dem Datenvertrag in WCF verglichen, da die Funktionalität ähnlich ist. Der Unterschied wird beschrieben.
Im Allgemeinen gilt für Fallbackverhalten:
- Attribute werden auf WS_STRING zurückverkn.
- Der Elementinhalt wird auf WS_XML_BUFFER zurückfallen.
- complexType wird auf eine Struktur mit einem Feld mit WS_XML_BUFFER zurückgeführt.
- Einfache Typen werden auf WS_STRING zurückverfallen.
wsutil generiert Warnungen für Schemakomponenten, die derzeit nicht vollständig unterstützt werden. Die Anwendung muss möglicherweise zusätzliche Überprüfungen für diese Komponenten durchführen. Überstunden wsutil kann verbessert werden, um einige der Features zu behandeln, die derzeit in der Laufzeit unterstützt werden, z. B. die Standardwertunterstützung. wsutil kann auch zusammen mit der Serialisierung verbessert werden, um andere Features wie abstract zu unterstützen. Die Anzahl der nicht unterstützten Schemakomponenten kann im Laufe der Zeit reduziert werden.
Das Gesamtschemadokument
Globale Definition, die sich auf eingebettete Definitionen im Schema auswirken kann. Dies sind globale Attribute, die für alle Definitionen im Schema gelten.
<xs:schemaattribute>
- attributFromDefault Ignored.
- blockDefault Ignoriert.
- elementFormDefault Ignored. Dies unterscheidet sich von dataContract, da nicht qualifizierte Elemente in der Laufzeit unterstützt werden.
- finalDefault Ignoriert. Es gibt keine C-Sprachunterstützung für das Konzept des Final.
- id Ignoriert.
- targetNamespace Wird unterstützt und dem Dienstnamespace zugeordnet.
- Version ignoriert.
<xs:schemainhalt>
- Include Supported; wsutil erfordert, dass alle erforderlichen Definitionen während der Kompilierungszeit als Eingabedateien verfügbar sind.
- Ignored neu definieren. wsutil unterstützt dies nicht.
- Import Unterstützt; wsutil erfordert, dass alle erforderlichen Definitionen während der Kompilierungszeit als Eingabedateien verfügbar sind.
- simpleType Supported( SimpleType Supported) – siehe Abschnitt einfacher Typ unten.
- complexType Supported– siehe Abschnitt "complexType"
- gruppe Ignoriert.
- attributeGroup Ignored.
- Element Unterstützt; wird globalen Elementdefinitionen zugeordnet.
- Attribut Unterstützt; wird globalen Attributdefinitionen zugeordnet.
- Notation Ignoriert
Komplexer Typ
Komplexer Typ, dargestellt durch <xs:complexType>, kann Einschränkung des einfachen Typs oder des komplexen Typs, Erweiterung des einfachen Typs, Arrays oder Struktur sein. Es wurde bemerkt, dass bei der Erweiterung einfacher Typen keine Vererbung und keine xsi:type-Unterstützung vorhanden ist.
<xs:complexType-Attribute>
- abstract Generieren Sie warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- block Warnung generieren zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Abschließende Warnung generieren zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- id Ignoriert.
- Gemischte Warnung generieren zu nicht unterstützten Features, Fallback auf Struktur mit WS_XML_BUFFER, wenn true.
- name Wird unterstützt und dem Namen des Strukturtyps zugeordnet.
<xs:complexType-Inhalte>
Dies ist die Typdefinition für die Struktur. complexContent-Einschränkung wird nicht unterstützt.
- complexContent Unterstützung für komplexe Inhaltserweiterungen. Zuordnung zur Strukturvererbung.
- group Derzeit fallback auf Struktur mit WS_XML_BUFFER Feld. Kann entsprechend dem darunter gestützten Partikel unterstützt werden.
- Auswahl, die als Union unterstützt wird. Dies wird im Datenvertrag nicht unterstützt.
- Sequenz Unterstützt: Ordnet Felder einer Struktur zu
- Das Attribut wird mit einer Ausnahme von "verboten" unterstützt. Fallback auf Struktur mit WS_XML_BUFFER, wenn "verboten".
- attributeGroup wird unterstützt: Zuordnung zur Sequenz von Attributen
- anyAttribute Ignored
- AttributeGroupRef Supported : ordnet die Reihenfolge von Attributen zu.
- GroupRef Derzeit fallback auf Struktur mit WS_XML_BUFFER Feld. Kann gemäß der folgenden Gruppe unterstützt werden.
- Alle unterstützten, zuordnungen zu XML_BUFFER
- (leer) unterstützte Zuordnung zu einer leeren Strukturbeschreibung ohne generierte Struktur.
<xs:sequence> in einem komplexen Typ: Inhalt
wsutil unterstützt nur die Sequenz von minOccurs = 1 und maxOccurs = 1; andernfalls wird der komplexe Typ derzeit auf WS_XML_BUFFER zurückfallen. Es kann als Array von Strukturen unterstützt werden.
- Element Unterstützt; jede instance einem Feld in der Struktur zugeordnet.
- Gruppenfallback; complexType ist ein Fallback auf WS_XML_BUFFER.
- Alle Fallbacks; complexType ist ein Fallback auf WS_XML_BUFFER.
- Auswahl unterstützt; zuordnung zum union-feld.
- Sequenzfallback; complexType ist ein Fallback auf WS_XML_BUFFER.
- alle unterstützten; XML_BUFFER zugeordnet.
- (leer) unterstützt; complexType kann eine leere Struktur sein, wenn keine Attribute vorhanden sind.
Elemente
<xs:element>kann in drei Kontexten auftreten.
- Es kann innerhalb einer <xs:sequence> auftreten, die ein Feld einer regulären Struktur beschreibt. In diesem Fall muss das maxOccurs-Attribut 1 sein. Das Feld ist optional, wenn minOccurs 0 ist.
- Es kann innerhalb einer <xs:sequence> auftreten, die ein Feld eines Arrays beschreibt. In diesem Fall muss das attribut maxOccurs größer als 1 oder "unbounded" sein.
- Es kann in einem <xs:schema> als globale Elementbeschreibung auftreten.
<xs:element> in einer <xs:sequence> oder <xs:choice> als Feld in einer Struktur
- ref Wird unterstützt; aufgelöst, um auf ein globales Element zu verweisen.
- Name Wird unterstützt, ordnet feldname zu.
- Vom Typ Unterstützt wird der Feldtyp zugeordnet. Weitere Informationen finden Sie unter Typzuordnung. Wenn nicht angegeben (und das Element keinen anonymen Typ enthält), wird xs:anyType angenommen.
- block Warnung generieren zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Standardwarnung für nicht unterstützte Features generieren, keine Änderung der Codegenerierung.
- Behoben: Warnung generieren über nicht unterstützte Features, keine Änderung der Codegenerierung.
- Formular Ignoriert. Unsere Serialisierungsebene unterstützt sowohl qualifizierte als auch nicht qualifizierte Formulare.
- id Ignoriert.
- maxOccurs wird einem einzelnen Datenfeld zugeordnet, wenn gleich 1. es wird einem Arrayfeld (wiederholtes Element) zugeordnet, wenn maxOccurs größer als 1 ist.
- minOccurs, wenn 0, sind die Feldoptionen auf FIELD_OPTIONAL festgelegt, wenn nillable nicht festgelegt ist.
- nillable Das Feld ist nillierbar. Weitere Informationen finden Sie unter Serialisierung .
<xs:element> as global element: attribute
Die Attribute minOccurs und maxOccurs sind als globale Elementbeschreibung ungültig. Die Anwendung kann die Beschreibung generierter Elemente direkt in Serialisierungsebenen oder Kanalebenen verwenden.
- abstract Generieren Sie warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- block Warnung generieren zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Standardwarnung für nicht unterstützte Features generieren, keine Änderung der Codegenerierung.
- Abschließende Warnung generieren zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Behoben: Warnung generieren über nicht unterstützte Features, keine Änderung der Codegenerierung.
- id Ignoriert.
- name Supported: Ordnen Sie dem Namen der beschreibung des globalen Elements zu, und es ist die Basis für den anonymen Typ, wenn angegeben.
- nillable Ignored-application muss mit dem rechten Flag aufrufen.
- substitutionGroup fallback to structure with WS_XML_BUFFER if set.substitutionGroup fallback to structure with WS_XML_BUFFER if set. wsutil unterstützt substitutionGroup nicht.
- geben Sie Unterstützt ein, und ordnen Sie dem Typ des Elements zu.
<xs:element> as global element: contents
- simpleType Wird unterstützt; ordnet der Typdefinition zu.
- complexType wird unterstützt; wird einem komplexen Typ zugeordnet.
- unique Generate warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung. wsutil unterstützt keine Elementeinschränkungen.
- key Generieren Sie Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung. wsutil unterstützt keine Elementeinschränkungen.
- keyref Generiert warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung. wsutil unterstützt keine Elementeinschränkungen.
- (leer) Unterstützt; -Element ohne Typspezifikation wird als xs:anyType behandelt.
Einfache Typen
<xs:simpleType-Attribute>
- Abschließende Warnung zum Generieren von nicht unterstützten Features, keine Änderung der Codegenerierung.
- ID ignoriert
- Name Wird unterstützt, ordnet den Typnamen zu.
<xs:simpleType-Inhalte>
- Einschränkung Unterstützt, ordnet dem Enumerationstyp oder -bereich zu. Weitere Informationen finden Sie im Abschnitt "xs:simpleType-Einschränkungen".
- Listen generieren Warnung zu nicht unterstützten Features, Fallback auf XML_BUFFER.
- Union Generate-Warnung zu nicht unterstütztem Feature, Fallback auf XML_BUFFER.
Einschränkung des einfachen Typs
Bestimmte Facetten sind in integralen Typen und Zeichenfolgentypen zulässig, um bereichs- und Enumerationsunterstützung zu ermöglichen.
Enumerationsunterstützung
<Die Einschränkung des einfachen xs:enumeration-Typs> für den Basistyp der Zeichenfolge wird als Enumerationstyp behandelt. In diesem Fall MUSS das Base-Attribut Zeichenfolgentyp sein. Im Enumerationsfall werden alle anderen Facetten ignoriert.
Bereich für einfache Typunterstützung
Einige Facetten werden in einfachen Typen unterstützt, die effektiv für den Typ zulässig sind. Im Folgenden sind Einschränkungen für integrale Typen und float/double-Typen aufgeführt. Einfache Typen mit anderen Facetten werden auf WS_STRING Typ zurückverfallen.
- minExclusive Wird unterstützt
- minInclusive Wird unterstützt
- maxExclusive Wird unterstützt
- maxInclusive Unterstützt
- totalDigits Generiert Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung.
- fractionDigits Generiert eine Warnung über nicht unterstützte Features, keine Änderung der Codegenerierung.
- length Generiert Warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- minLength Generate-Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung.
- maxLength Generate-Warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Enumeration Generiert Warnung zu nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- whiteSpace Generieren Sie warnung vor nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- Muster generieren Warnung vor nicht unterstütztem Feature, keine Änderung der Codegenerierung.
- (leer) Unterstützt.
minLength und maxLength für Zeichenfolgen werden derzeit nicht unterstützt, sind aber ein wünschenswertes Feature, das unterstützt werden soll.
Vererbung
Wsutil unterstützt die Vererbung komplexer Typen, d. h. eine Struktur kann von einer anderen Struktur erben, ähnlich der Schnittstellenvererbung in C++. Dies geschieht über <xs:complexContentExtension>. <xs:simpleContentExtension> wird unterstützt, wird aber als einfache Struktur mit Basistyp als erstes Feld anstelle der Typvererbung generiert.
Zuordnung von Typen zu primitivem Typen
Bezeichner müssen bei der Übersetzung aus NCNames in XML normalisiert werden. Zeichenfolgen sind nillierbar; Zeigertypen sind nillierbar; integrale Typen und float/double sind nillierbar, und defaultValue ist auf 0 festgelegt.