Freigeben über


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 Auswahlmöglichkeiten von Elementen (denen, die einer markierten Vereinigung zugeordnet sind).
  • Grundlegende Typen, die von XSD / .NET-Binärformat definiert sind, einschließlich Bereichen (min/max).
  • Einfache Unterstützung für jedes Element (keine Einschränkungen für den Typ des Elements).
  • Optionale Elemente und Attribute mit Standardwerten.
  • Wiederholte Elemente mit Bereichen (min/max).
  • Nillable Elemente.

Das Schema unterstützt folgendes nicht direkt (was das "Fallback"-Verhalten impliziert):

  • Benutzerdefinierte Standardtypen.
  • Komplexere Auswahlmöglichkeiten.
  • Ablehnen unbekannter Attribute.
  • Roundtripping unbekannter Attribute.
  • Komplexere Unterstützung für jedes Element.
  • Das gesamte Konstrukt.
  • Taste/Keyref.

Nachfolgend finden Sie eine detaillierte Aufschlüsselung verschiedener Schemakomponentenunterstützung. Es wird mit dem Datenvertrag in WCF verglichen, da die Ähnlichkeit in der Funktionalität. Der Unterschied wird beschrieben.

Im Allgemeinen gilt für Fallbackverhalten:

  • Attribute werden auf WS_STRING zurückfallen;
  • Elementinhalte werden auf WS_XML_BUFFER zurückfallen.
  • complexType wird auf die Struktur zurückfallen, die ein Feld von WS_XML_BUFFER enthält.
  • Einfache Typen werden auf WS_STRING zurückfallen.

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. Overtime wsutil kann verbessert werden, um einige der Features zu behandeln, die derzeit in der Laufzeit unterstützt werden, z. B. die Unterstützung für Standardwerte. wsutil kann auch zusammen mit der Serialisierung verbessert werden, um andere Features wie abstrakt zu unterstützen. Die Anzahl der nicht unterstützten Schemakomponenten kann im Laufe der Zeit reduziert werden.

Das Allgemeine Schemadokument

Globale Definition, die sich auf eingebettete Definitionen im Schema auswirken kann. Dies sind globale Attribute, die für alle Definitionen im Schema gelten.

<xs:schema> Attribute

  • attributeFromDefault Ignored.
  • blockDefault Ignored.
  • elementFormDefault Ignored. Dies unterscheidet sich von "dataContract", da nicht qualifizierte Elemente zur Laufzeit unterstützt werden.
  • finalDefault Ignored. Es gibt keine C-Sprachunterstützung für das Konzept des Endgültigen.
  • ID ignoriert.
  • targetNamespace Supported and mapped to the service namespace.
  • Version ignoriert.

<xs:schema> Inhalt

  • einschließen unterstützt; wsutil erfordert, dass alle erforderlichen Definitionen während der Kompilierungszeit als Eingabedateien verfügbar sind.
  • neu definieren Ignoriert. 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- siehe Abschnitt "Einfacher Typ" weiter unten.
  • complexType Supported- siehe Abschnitt "complexType"
  • gruppe ignoriert.
  • attributeGroup Ignored.
  • Element unterstützt; zugeordnet zu globalen Elementdefinitionen.
  • Attribut unterstützt; zugeordnet zu globalen Attributdefinitionen.
  • Notation ignoriert

Komplexer Typ

Komplexer Typ, dargestellt durch <xs:complexType>, kann eine Einschränkung von einfachem Typ oder komplexem Typ, Erweiterung von einfachem Typ, Arrays oder Struktur sein. Beachten Sie, dass bei Der Erweiterung einfacher Typen keine Vererbung und keine xsi:type-Unterstützung vorhanden ist.

<xs:complexType> Attribute

  • abstract Generate warning about unsupported feature, no change to code generation.
  • Warnung beim Generieren von nicht unterstützten Features blockieren, keine Änderung an der Codegenerierung.
  • abschließende Warnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • ID ignoriert.
  • Mixed Generate warning about unsupported feature, fallback to structure with WS_XML_BUFFER if true.
  • name Supported and mapped to structure type name.

<xs:complexType> Inhalt

Dies ist die Typdefinition für die Struktur. complexContent-Einschränkung wird nicht unterstützt.

  • complexContent Support complexContent Support complex content extension. Ordnet die Strukturvererbung zu.
  • group Currently fallback to structure with WS_XML_BUFFER field. Kann nach dem darunter liegenden Partikel unterstützt werden.
  • Auswahl wird als Union unterstützt. Dies wird im Datenvertrag nicht unterstützt.
  • Sequenz unterstützt – Zuordnung zu Feldern einer Struktur
  • Attribut, das mit einer Ausnahme von "verboten" unterstützt wird. fallback to structure with WS_XML_BUFFER if 'prohibited'.
  • attributGroup unterstützt – Zuordnung zur Abfolge von Attributen
  • anyAttribute Ignored
  • AttributeGroupRef Supported – ordnet die Reihenfolge der Attribute zu.
  • GroupRef Zurzeit fallback to structure with WS_XML_BUFFER field. Kann gemäß der darunter liegenden Gruppe unterstützt werden.
  • Alle unterstützten Elemente werden XML_BUFFER
  • (leer) Unterstützte Zuordnung zur 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. Sie kann als Array von Strukturen unterstützt werden.

  • Element unterstützt; jede Instanz ist einem Feld in der Struktur zugeordnet.
  • Gruppenfallback; the complexType is fallback to WS_XML_BUFFER.
  • Alle Fallbacks; the complexType is fallback to WS_XML_BUFFER.
  • Auswahl unterstützt; Zuordnung zum Union-Feld.
  • Sequenzfallback; the complexType is fallback to 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 maxOccurs-Attribut größer als 1 oder "ungebunden" sein.
  • Sie kann innerhalb einer <xs:schema-> als globale Elementbeschreibung auftreten.

<xs:element> innerhalb eines <xs:sequence> oder <xs:choice> als Feld in einer Struktur

  • ref Supported; wurde aufgelöst, um auf ein globales Element zu verweisen.
  • name Supported, maps to field name.
  • type Supported, maps to field type. Weitere Informationen finden Sie unter 'Typzuordnung'. Wenn nicht angegeben (und das Element keinen anonymen Typ enthält), wird xs:anyType angenommen.
  • Warnung beim Generieren von nicht unterstützten Features blockieren, keine Änderung an der Codegenerierung.
  • Standardwarnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • Fixed Generate warning about unsupported feature, no change to code generation.
  • Formular ignoriert. Unsere Serialisierungsebene unterstützt sowohl qualifizierte als auch nicht qualifizierte Formulare.
  • ID ignoriert.
  • maxOccurs ist einem einzelnen Datenfeld zugeordnet, wenn gleich 1. es wird einem Arrayfeld (wiederholtes Element) zugeordnet, wenn maxOccurs größer als 1 ist.
  • minOccurs if 0, the field options is set to FIELD_OPTIONAL, if nillable is not set.
  • nillable The field is nillable. Weitere Informationen finden Sie unter Serialisierung.

<xs:element> als globales Element: Attribute

minOccurs- und maxOccurs-Attribute sind als globale Elementbeschreibung ungültig. Die Anwendung kann die Beschreibung generierter Elemente direkt in Serialisierungsebenen oder Kanalebenen verwenden.

  • abstract Generate warning about unsupported feature, no change to code generation.
  • Warnung beim Generieren von nicht unterstützten Features blockieren, keine Änderung an der Codegenerierung.
  • Standardwarnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • abschließende Warnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • Fixed Generate warning about unsupported feature, no change to code generation.
  • ID ignoriert.
  • name Supported- map to name of the global element description, and it is the base for the anonymous type when specified.
  • nillable Ignored-Application muss mit rechtem Flag aufgerufen werden.
  • substitutionGroup fallback to structure with WS_XML_BUFFER if set. wsutil unterstützt substitutionGroup nicht.
  • type Supported and map to the type of the element.

<xs:element> als globales Element: Inhalt

  • simpleType unterstützt; ordnet die Typdefinition zu.
  • complexType unterstützt; einem komplexen Typ zugeordnet.
  • eindeutige Warnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung. wsutil unterstützt keine Elementeinschränkungen.
  • key Generate warning about unsupported feature, no change to code generation. wsutil unterstützt keine Elementeinschränkungen.
  • keyref Warnung zu nicht unterstützten Features generieren, keine Änderung der Codegenerierung. wsutil unterstützt keine Elementeinschränkungen.
  • (leer) Abgestützt; Element ohne Typspezifikation wird als "xs:anyType" behandelt.

Einfache Typen

<xs:simpleType> Attribute

  • Letzte Warnung zum Generieren von nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • ID ignoriert
  • Name Supported, zuordnung to type name.

<xs:simpleType> Inhalt

  • Einschränkung unterstützt, ordnet den Enumerationstyp oder -bereich zu. Siehe Abschnitt "xs:simpleType-Einschränkungen".
  • Warnung zum Generieren einer Warnung zu nicht unterstützten Features, Fallback auf XML_BUFFER.
  • Union Generiert Warnung zu nicht unterstützten Features, Fallback auf XML_BUFFER.

Einfache Typeinschränkung

Bestimmte Facets sind in integralen Typen und Zeichenfolgentypen zulässig, um die Bereichs- und Enumerationsunterstützung zu ermöglichen.

Enumerationsunterstützung

<xs:enumeration> einfache Typeinschränkung für den Basistyp der Zeichenfolge wird als Enumerationstyp behandelt. In diesem Fall muss das Base-Attribut Zeichenfolgentyp sein. Im Enumerationsfall werden alle anderen Facets ignoriert.

Bereich bei einfacher Typunterstützung

Einige Facets unterstützen einfache Typen, die effektiv zulässige Reichweite für den Typ unterstützen. Im Folgenden sind Einschränkungen für integrale Typen und Float/Double-Typen aufgeführt. Einfache Typen mit anderen Facets werden auf WS_STRING Typ zurückfallen.

  • minExclusive Supported
  • minInclusive Supported
  • maxExclusive Supported
  • maxInclusive Supported
  • totalDigits Generieren einer Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung.
  • fractionDigits Generieren einer Warnung zu nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • length Generate warning about unsupported feature, no change to code generation.
  • minLength Generieren einer Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung.
  • maxLength Generieren Warnung zu nicht unterstützten Features, keine Änderung der Codegenerierung.
  • Enumeration generieren Warnung zu nicht unterstützten Features, keine Änderung an der Codegenerierung.
  • WhiteSpace-Warnung zu nicht unterstützten Features generieren, keine Änderung der Codegenerierung.
  • Musterwarnung zu nicht unterstützten Features generieren, keine Änderung an der Codegenerierung.
  • (leer) Abgestützt.

"minLength" und "maxLength" für die Zeichenfolge werden derzeit nicht unterstützt, es ist jedoch ein wünschenswertes Feature, das unterstützt werden soll.

Erbschaft

Wsutil unterstützt die Vererbung komplexer Typen, d. h. eine Struktur kann von einer anderen Struktur erben, ähnlich der Schnittstellenvererbung in C++. Dies erfolgt über <xs:complexContentExtension>. <xs:simpleContentExtension> wird unterstützt, wird aber als einfache Struktur mit Basistyp als erstes Feld anstelle der Typvererbung generiert.

Typ-/Grundtypzuordnung

Bezeichner müssen beim Übersetzen aus NCNames in XML normalisiert werden. Zeichenfolgen sind nillierbar; Zeigertypen sind nillierbar; Integraltypen und float/double sind nillierbar und defaultValue ist auf 0 festgelegt.

Tabelle mit der Zuordnung zwischen XSD-Typen und Saphir-Datentypen.