Anteckningar om XML-typstödimplementering
Det här avsnittet beskriver några implementeringsinformation som du vill vara medveten om.
Listmappningar
Typerna IList, ICollection, IEnumerable, Type[], och String används för att representera XSD-listtyper (XML Schema Definition Language).
Unionsmappningar
Union-typer representeras med hjälp av XmlAtomicValue typen eller String . Källtypen eller måltypen måste därför alltid vara antingen String eller XmlAtomicValue.
Om objektet XmlSchemaDatatype representerar en listtyp konverterar objektet indatasträngvärdet till en lista över ett eller flera objekt. XmlSchemaDatatype Om representerar en unionstyp görs ett försök att parsa indatavärdet som en medlemstyp i unionen. Om parsningsförsöket misslyckas görs konverteringen med nästa medlem i unionen och så vidare tills konverteringen lyckas, eller så finns det inga andra medlemstyper att prova, i vilket fall ett undantag utlöses.
Skillnader mellan CLR- och XML-datatyper
Följande beskriver vissa matchningar som kan uppstå mellan CLR-typer och XML-datatyper och hur de hanteras.
Kommentar
Prefixet xs
mappas till URI:n https://www.w3.org/2001/XMLSchema för namnområdet och .
System.TimeSpan och xs:duration
Typen xs:duration
sorteras delvis eftersom det finns vissa varaktighetsvärden som är olika men likvärdiga. Det innebär att för xs:duration
typvärdet, till exempel 1 månad (P1M) är mindre än 32 dagar (P32D), större än 27 dagar (P27D) och motsvarande 28, 29 eller 30 dagar.
Klassen TimeSpan stöder inte den här partiella ordningen. I stället väljer den ett visst antal dagar för 1 år och 1 månad. 365 dagar respektive 30 dagar.
Mer information om typen finns i xs:duration
W3C XML-schema del 2: Rekommendation för datatyper.
xs:time, gregorianska datumtyper och System.DateTime
När ett xs:time
värde mappas till ett DateTime objekt MinValue används fältet för att initiera datumegenskaperna DateTime för objektet (till exempel Year, Monthoch Day) till det minsta möjliga DateTime värdet.
På samma sätt mappas även instanser av xs:gMonth
, xs:gDay
, xs:gYear
xs:gYearMonth
och xs:gMonthDay
till ett DateTime objekt. Oanvända egenskaper för DateTime objektet initieras till dem från MinValue.
Kommentar
Du kan inte lita på värdet DateTime.Year när innehållet skrivs som xs:gMonthDay
. Värdet DateTime.Year är alltid inställt på 1904 i det här fallet.
xs:anyURI och System.Uri
När en instans av xs:anyURI
den representerar en relativ URI mappas till en Urihar Uri objektet ingen bas-URI.