Remarques pour l'implémentation de la prise en charge du type XML
Cette rubrique décrit certains détails de l'implémentation que vous souhaitez connaître.
Mappages de liste
Les types IList, ICollection, IEnumerable, Type[] et String permettent de représenter des types de liste du langage XSD (XML Schema Definition).
Mappages d'union
Les types d'union sont représentées à l'aide du type XmlAtomicValue ou String. Le type de source ou de destination doit donc toujours être un objet String ou XmlAtomicValue.
Si l'objet XmlSchemaDatatype représente un type de liste, l'objet convertit la valeur de la chaîne d'entrée en une liste d'au moins un objet. Si l'objet XmlSchemaDatatype représente un type d'union, il essaye ensuite d'analyser la valeur d'entrée comme un type de membre de l'union. Si la tentative d'analyse échoue, une tentative de conversion avec le membre suivant de l'union est effectuée jusqu'à ce que la conversion soit réussie ou qu'il n'y ait plus de types de membre pour essayer la conversion. Dans ce cas, une exception est levée.
Différences entre les types de données CLR et XML
Voici la description de certaines incompatibilités qui peuvent se produire entre les types de données CLR et XML et concernant la manière de les traiter.
Notes
Le préfixe xs
est mappé à l’URI d’espace de noms https://www.w3.org/2001/XMLSchema.
System.TimeSpan et xs:duration
Le type xs:duration
est partiellement trié en ce sens que certaines valeurs de durée sont différentes mais équivalentes. Cela signifie que pour la valeur de type xs:duration
, la valeur de 1 mois (P1M) est inférieure à 32 jours (P32D), supérieure à 27 jours (P27D) et équivalente à 28, 29 ou 30 jours.
La classe TimeSpan ne prend pas en charge ce tri partiel. Par contre, elle détermine un nombre spécifique de jours pour un an et pour un mois, respectivement 365 jours et 30 jours.
Pour plus d’informations sur le type xs:duration
, consultez les recommandations du W3C sur les schémas XML (« XML Schema Part 2: Datatypes »).
xs:time, types de dates grégoriennes et System.DateTime
Lorsqu'une valeur xs:time
est mappée à un objet DateTime, le champ MinValue permet d'initialiser les propriétés de date de l'objet DateTime (telles que Year, Month et Day) à la valeur DateTime la plus petite possible.
De même, des instances de xs:gMonth
, xs:gDay
, xs:gYear
, xs:gYearMonth
et xs:gMonthDay
sont également mappées à un objet DateTime. Les propriétés inutilisées de l'objet DateTime sont initialisées sur celles de MinValue.
Notes
Vous ne pouvez pas compter sur la valeur DateTime.Year lorsque le contenu est de type xs:gMonthDay
. La valeur DateTime.Year est toujours définie sur 1904 dans ce cas.
xs:anyURI et System.Uri
Lorsqu'une instance de xs:anyURI
qui représente un URI relatif est mappée à un objet Uri, l'objet Uri n'a pas d'URI de base.