Freigeben über


Regeln zum Herleiten einfacher Typen

Aktualisiert: November 2007

Beschreibt das Herleiten der Datentypen für Attribute und Elemente mit der XmlSchemaInference-Klasse.

Die XmlSchemaInference-Klasse leitet den Datentyp für Attribute und Elemente als einfache Typen her. In diesem Abschnitt werden die möglichen hergeleiteten Typen, das Zusammenführen mehrerer unterschiedlicher Werte zu einem einzelnen Typ und die Behandlung von schemadefinierten xsi-Attributen beschrieben.

Hergeleitete Typen

Die XmlSchemaInference-Klasse leitet Elemente und Attribute als einfache Typen her und fügt im resultierenden Schema einen Attributtyp ein. Bei allen hergeleiteten Typen handelt es sich um einfache Typen. Basistypen oder Facets sind keine Bestandteile des resultierenden Schemas.

Grafik zum einfachen Typrückschluss

Die Werte werden einzeln, in der Reihenfolge ihres Vorhandenseins im XML-Dokument überprüft. Der Typ für einen Wert wird zum Zeitpunkt der Überprüfung des Werts hergeleitet. Wenn ein Typ für ein Attribut oder ein Element hergeleitet wurde und für das Attribut oder das Element ein Wert festgestellt wird, der nicht mit dem aktuell hergeleiteten Typ übereinstimmt, stuft die XmlSchemaInference-Klasse den Typ für jede Regelgruppe hoch. Diese Regeln werden weiter unten im Abschnitt "Heraufstufen von Typen" erläutert.

In der folgenden Tabelle werden die für das resultierende Schema möglichen hergeleiteten Typen aufgeführt.

Einfacher Typ

Beschreibung

boolean

True, false, 0, 1.

byte

Ganze Zahlen im Bereich von -128 bis 127.

unsignedByte

Ganze Zahlen im Bereich von 0 bis 255.

short

Ganze Zahlen im Bereich von -32768 bis 32767.

unsignedShort

Ganze Zahlen im Bereich von 0 bis 65535.

int

Ganze Zahlen im Bereich von -2147483648 bis 2147483647.

unsignedInt

Ganze Zahlen im Bereich von 0 bis 4294967295.

long

Ganze Zahlen im Bereich von -9223372036854775808 bis 9223372036854775807.

unsignedLong

Ganze Zahlen im Bereich von 0 bis 18446744073709551615.

integer

Eine endliche Anzahl von Ziffern, möglichst mit dem Präfix "-".

decimal

Numerische Werte mit einer Genauigkeit von 0 bis 28 Stellen.

float

Dezimalzahlen, nach denen optional "E" oder "e" folgt, gefolgt von einem Ganzzahlenwert als Exponent. Dezimalwerte können im Bereich von -16777216 bis 16777216 liegen. Exponentenwerte können zwischen -149 und 104 liegen.

Float ermöglicht spezielle Werte, mit denen unendliche und nicht numerische Werte dargestellt werden. Diese speziellen Werte umfassen die Folgenden: 0, -0, INF, -INF, NaN.

double

Die gleichen Werte wie bei float, allerdings können die Dezimalwerte im Bereich von -9007199254740992 bis 9007199254740992 und die Exponentenwerte zwischen –1075 und 970 liegen.

Double ermöglicht spezielle Werte, mit denen unendliche und nicht numerische Werte dargestellt werden. Diese speziellen Werte umfassen die Folgenden: 0, -0, INF, -INF, NaN.

duration

Das W3C-Format für duration.

dateTime

Das W3C-Format für dateTime.

time

Das W3C-Format für time.

date

Die Werte für Jahreszahlen sind auf einen Bereich von 0001 bis 9999 beschränkt.

gYearMonth

Das gregorianische Monats- und Zeitformat von W3C.

string

Ein oder mehrere Unicode-Zeichen.

Heraufstufen von Typen

Die XmlSchemaInference-Klasse überprüft Attribut- und Elementwerte der Reihenfolge nach. Wenn Werte festgestellt werden, wird der am weitesten eingeschränkte Typ ohne Vorzeichen hergeleitet. Wenn für ein Attribut oder ein Element ein Typ hergeleitet wurde und einer neuer Wert festgestellt wird, der nicht mit dem aktuell hergeleiteten Typ übereinstimmt, wird der hergeleitete Typ auf einen neuen Typ heraufgestuft. Dieser Typ entspricht sowohl dem aktuell hergeleiteten Typ als auch dem neuen Wert. Die XmlSchemaInference-Klasse berücksichtigt beim Heraufstufen hergeleiteter Typen vorherige Werte.

Betrachten Sie beispielsweise die folgenden XML-Ausschnitte aus zwei XML-Dokumenten:

<MyElement1 attr1="12" />

<MyElement1 attr1="52344" />

Wenn der erste attr1-Wert festgestellt wird, wird der Typ von attr1 auf der Grundlage des Werts 12 als unsignedByte hergeleitet. Wenn der zweite attr1-Wert festgestellt wird, wird der Typ auf der Grundlage des aktuell hergeleiteten Typs unsignedByte und des aktuellen Werts 52344 auf unsignedShort heraufgestuft.

Betrachten Sie nun die folgenden XML-Daten aus zwei XML-Dokumenten:

<MyElement2 attr2="0" />

<MyElement2 attr2="true" />

Wenn der erste attr2-Wert festgestellt wird, wird der Typ von attr2 auf der Grundlage des Werts 0 als unsignedByte hergeleitet. Wenn der zweite attr2-Wert festgestellt wird, wird der Typ auf der Grundlage des aktuell hergeleiteten Typs unsignedByte und des aktuellen Werts true auf string heraufgestuft, da die XmlSchemaInference-Klasse beim Heraufstufen des hergeleiteten Typs vorherige Werte berücksichtigt. Wenn jedoch beide Instanzen von attr2 im selben XML-Dokument und nicht, wie im Beispiel oben dargestellt, in zwei unterschiedlichen Dokumenten festgestellt worden wären, wäre attr2 als boolean hergeleitet worden.

Ignorierte Attribute aus dem http://www.w3.org/2001/XMLSchema-instance-Namespace

Bei den folgenden Attributen handelt es sich um schemadefinierte Attribute, die während der Schemaherleitung ignoriert werden.

Attribut

Beschreibung

xsi:type

Wenn ein Element mit der Angabe xsi:type festgestellt wird, wird xsi:type ignoriert.

xsi:nil

Wenn ein Element mit einem xsi:nil-Attribut festgestellt wird, weist dessen Elementdeklaration im hergeleiteten Schema den Wert nillable="true" auf. Ein Element, dessen xsi:nil-Attribut auf true festgelegt wurde, darf keine untergeordneten Elemente besitzen.

xsi:schemaLocation

Wenn xsi:schemaLocation festgestellt wird, wird dies ignoriert.

xsi:noNamespaceSchemaLocation

Wenn xsi:noNamespaceSchemaLocation festgestellt wird, wird dies ignoriert.

Siehe auch

Konzepte

Herleiten von Schemata aus XML-Dokumenten

Regeln für Rückschlussschemaknotentypen und Struktur

Weitere Ressourcen

XML-Schemaobjektmodell (SOM)