Dela via


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:gYearxs: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.

Se även