Poznámky k implementaci podpory typů XML
Toto téma popisuje některé podrobnosti implementace, o nichž chcete vědět.
Mapování seznamů
Typy IList, , ICollection, , IEnumerableType[] a String typy se používají k reprezentaci typů jazyka XSD (XML Schema Definition Language).
Mapování sjednocení
Typy sjednocení jsou reprezentovány pomocí XmlAtomicValue typu nebo String typu. Typ zdroje nebo cílový typ proto musí být vždy buď String nebo XmlAtomicValue.
XmlSchemaDatatype Pokud objekt představuje typ seznamu objekt, převede vstupní řetězcovou hodnotu na seznam jednoho nebo více objektů. XmlSchemaDatatype Pokud představuje typ sjednocení, provede se pokus o parsování vstupní hodnoty jako typ člena sjednocení. Pokud pokus o analýzu selže, pokusí se převod provést s dalším členem sjednocení a tak dále, dokud převod nebude úspěšný, nebo neexistují žádné další typy členů, které by bylo potřeba zkusit, v takovém případě je vyvolána výjimka.
Rozdíly mezi datovými typy CLR a XML
Následující popis popisuje určité neshody, ke kterým může dojít mezi typy CLR a datovými typy XML a způsobem jejich zpracování.
Poznámka:
Předpona xs
se mapuje na https://www.w3.org/2001/XMLSchema identifikátor URI oboru názvů.
System.TimeSpan a xs:duration
Typ xs:duration
je částečně seřazený v tom, že existují určité hodnoty doby trvání, které jsou odlišné, ale ekvivalentní. To znamená, že hodnota xs:duration
typu, například 1 měsíc (P1M), je menší než 32 dní (P32D), větší než 27 dní (P27D) a odpovídá 28, 29 nebo 30 dnům.
Třída TimeSpan nepodporuje toto částečné řazení. Místo toho vybere určitý počet dní pro 1 rok a 1 měsíc; 365 dní a 30 dnů.
Další informace o xs:duration
typu naleznete v tématu W3C XML Schéma Část 2: Doporučení datových typů.
xs:time, gregoriánské typy kalendářních dat a System.DateTime
xs:time
Při mapování hodnoty na DateTime objekt se MinValue pole použije k inicializaci vlastností data objektu DateTime (například Year, Montha Day) na nejmenší možnou DateTime hodnotu.
Podobně jsou instance xs:gMonth
, , xs:gDay
xs:gYearMonth
xs:gYear
a xs:gMonthDay
jsou také mapovány na DateTime objekt. Nepoužité vlastnosti objektu DateTime jsou inicializovány na ty z MinValue.
Poznámka:
Nelze spoléhat na DateTime.Year hodnotu, pokud je obsah zadán jako xs:gMonthDay
. Hodnota DateTime.Year je v tomto případě vždy nastavená na hodnotu 1904.
xs:anyURI a System.Uri
Pokud je instancexs:anyURI
, která představuje relativní identifikátor URI mapován na , UriUri objekt nemá základní identifikátor URI.