Implementatieopmerkingen voor XML-type ondersteunen
In dit onderwerp worden enkele implementatiedetails beschreven waarvan u rekening wilt houden.
Lijsttoewijzingen
De IListtypen , ICollection, IEnumerableType[] en String typen worden gebruikt om de lijsttypen XML Schema Definition Language (XSD) weer te geven.
Samenvoegtoewijzingen
Samenvoegtypen worden weergegeven met behulp van het XmlAtomicValue of String type. Het brontype of het doeltype moet daarom altijd String of XmlAtomicValue.
Als het XmlSchemaDatatype object een lijsttype vertegenwoordigt, converteert het object de invoertekenreekswaarde naar een lijst met een of meer objecten. Als het XmlSchemaDatatype een samenvoegtype vertegenwoordigt, wordt geprobeerd de invoerwaarde te parseren als lidtype van de samenvoeging. Als de parseringspoging mislukt, wordt de conversie geprobeerd met het volgende lid van de samenvoeging, enzovoort totdat de conversie is geslaagd, of er zijn geen andere lidtypen om te proberen. In dat geval wordt er een uitzondering gegenereerd.
Verschillen tussen CLR- en XML-gegevenstypen
Hieronder worden bepaalde verschillen beschreven die kunnen optreden tussen CLR-typen en XML-gegevenstypen en hoe ze worden verwerkt.
Notitie
Het xs
voorvoegsel wordt toegewezen aan de URI van de https://www.w3.org/2001/XMLSchema naamruimte.
System.TimeSpan en xs:duration
Het xs:duration
type is gedeeltelijk geordend omdat er bepaalde duurwaarden zijn die verschillend maar gelijkwaardig zijn. Dit betekent dat voor de xs:duration
typewaarde, zoals 1 maand (P1M), kleiner is dan 32 dagen (P32D), groter dan 27 dagen (P27D) en gelijk is aan 28, 29 of 30 dagen.
De TimeSpan klasse biedt geen ondersteuning voor deze gedeeltelijke bestelling. In plaats daarvan kiest het een specifiek aantal dagen voor 1 jaar en 1 maand; Respectievelijk 365 dagen en 30 dagen.
Zie het W3C XML-schema deel 2: Aanbeveling voor gegevenstypen voor meer informatie over het xs:duration
type.
xs:time, Gregoriaanse datumtypen en System.DateTime
Wanneer een xs:time
waarde wordt toegewezen aan een DateTime object, wordt het MinValue veld gebruikt om de datumeigenschappen van het DateTime object (zoals YearMonth, en Day) te initialiseren naar de kleinste mogelijke DateTime waarde.
Op dezelfde manier worden exemplaren van xs:gMonth
, xs:gDay
en xs:gYearMonth
xs:gYear
xs:gMonthDay
ook toegewezen aan een DateTime object. Ongebruikte eigenschappen van het DateTime object worden geïnitialiseerd naar eigenschappen van waaruit MinValue.
Notitie
U kunt niet vertrouwen op de DateTime.Year waarde wanneer de inhoud wordt getypt als xs:gMonthDay
. De DateTime.Year waarde is altijd ingesteld op 1904 in dit geval.
xs:anyURI en System.Uri
Wanneer een exemplaar van xs:anyURI
die een relatieve URI aan een Uriwordt toegewezen, heeft het Uri object geen basis-URI.