Partager via


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.

Voir aussi