Implementierungshinweise zur XML-Typunterstützung

Aktualisiert: November 2007

In diesem Thema werden einige Implementierungsdetails beschrieben, die Sie beachten müssen.

Listenzuordnungen

Die Typen IList, ICollection, IEnumerable, Type[] und String werden zur Darstellung von XSD-Listentypen (XML Schema Definition Language) verwendet.

Union-Zuordnungen

Union-Typen werden durch den XmlAtomicValue-Typ oder den String-Typ dargestellt. Der Ausgangs- oder Zieltyp muss daher immer String oder XmlAtomicValue sein.

Wenn das XmlSchemaDatatype-Objekt einen Listentyp darstellt, konvertiert das Objekt den Wert der Eingabezeichenfolge in eine Liste aus einem oder mehreren Objekten. Wenn das XmlSchemaDatatype-Objekt einen Union-Typ darstellt, wird versucht, den Eingabewert als einen Membertyp der Union zu interpretieren. Wenn ein Versuch fehlschlägt, wird der Konvertierungsversuch mit dem nächsten Member der Union wiederholt. Dies wird wiederholt bis die Konvertierung erfolgreich ist oder bis die Konvertierung für alle Membertypen erfolglos war. In diesem Fall wird eine Ausnahme ausgelöst.

Unterschiede zwischen CLR-Datentypen und XML-Datentypen

Es folgt eine Beschreibung möglicher Konflikte zwischen CLR-Datentypen und XML-Datentypen und ihrer Behandlung.

Hinweis:

Das xs-Präfix wird dem Namespace-URI http://www.w3.org/2001/XMLSchema zugeordnet.

"System.TimeSpan" und "xs:duration"

Der xs:duration-Typ ist insofern partiell geordnet, als dass es Intervalle gibt, die verschieden, aber äquivalent sind. Dies bedeutet, dass für Werte von Typ xs:duration gilt, dass ein Monat (P1M) kleiner als 32 Tage (P32D), größer als 27 Tage (P27D) und äquivalent zu 28, 29 oder 30 Tagen ist.

Die TimeSpan-Klasse unterstützt diese partielle Ordnung nicht. Für ein Jahr und einen Monat wird eine bestimmte Anzahl von Tagen (365 bzw. 30) festgelegt.

Weitere Informationen über den xs:duration-Typ finden Sie in der Spezifikation "XML Schema Part 2: Datatypes Recommendation" des W3C unter http://www.w3.org/TR/xmlschema-2/.

"xs:time", Typen für das gregorianische Datum und "System.DateTime"

Wenn einem xs:time-Wert ein DateTime-Objekt zugeordnet wird, wird das MinValue-Feld zur Initialisierung der Datumseigenschaften des DateTime-Objekts (z. B. Year, Month oder Day) mit dem kleinsten möglichen DateTime-Wert verwendet.

In gleicher Weise wird den Instanzen von xs:gMonth, xs:gDay, xs:gYear, xs:gYearMonth und xs:gMonthDay ein DateTime-Objekt zugeordnet. Nicht verwendete Eigenschaften des DateTime-Objekts werden mit den Werten von MinValue initialisiert.

Hinweis:

Wenn der Inhalt den Typ xs:gMonthDay hat, ist der DateTime.Year-Wert nicht verlässlich. Der DateTime.Year-Wert wird in diesem Fall immer auf 1904 festgelegt.

"xs:anyURI" und "System.Uri"

Wenn einer Instanz von xs:anyURI, die einen relativen URI darstellt, ein Uri zugeordnet wird, hat das Uri-Objekt keinen Basis-URI.

Siehe auch

Weitere Ressourcen

Typenunterstützung in den System.Xml-Klassen