XML 型サポートの実装に関するメモ
このトピックでは、認識しておく必要があるいくつかの実装上の詳細について説明します。
リストのマッピング
IList、ICollection、IEnumerable、Type[]、String 型は、XML スキーマ定義言語 (XSD) のリスト型を表現するために使用されます。
ユニオンのマッピング
ユニオン型は XmlAtomicValue 型または String 型を使用して表現されます。 したがって、変換前の型または変換後の型は常に String または XmlAtomicValue のどちらかである必要があります。
XmlSchemaDatatype オブジェクトがリスト型を表す場合、このオブジェクトは入力文字列値をリストまたは複数のオブジェクトに変換します。 XmlSchemaDatatype が共用体型を表す場合は、共用体のメンバーの型として入力値が解析されます。 解析が失敗した場合は、変換が成功するか他のメンバーの型がなくなるまで、ユニオンの次のメンバーを使用して変換が試行されます。変換を試行するメンバーの型がなくなると、例外がスローされます。
CLR 型と XML データ型の違い
CLR 型と XML データ型の間で発生する可能性のある不一致とその処理方法を次に示します。
注意
xs
プレフィックスは、https://www.w3.org/2001/XMLSchema と名前空間の URI にマップされます。
System.TimeSpan と xs:duration
xs:duration
型は、値は異なるが同等の継続時間値として、部分的な順序付けが行われます。 これは、たとえば 1 か月 (P1M) という xs:duration
型の値が、32 日 (P32D) より小さく、27 日 (P27D) より大きく、28 日、29 日または 30 日と同等であることを意味します。
TimeSpan クラスは、この部分的な順序付けをサポートしません。 その代わりに、1 年および 1 か月に特定の日数 (それぞれ 365 日と 30 日) を使用します。
xs:duration
型の詳細については、W3C の 「XML Schema Part 2: Datatypes Recommendation」(XML スキーマ 第 2 部: データ型の推奨事項) を参照してください。
xs:time、グレオリオ暦の日付、および System.DateTime
xs:time
値が DateTime オブジェクトにマップされている場合、MinValue フィールドは DateTime オブジェクトの日付プロパティ (Year、Month、Day など) を可能な最小の DateTime 値に初期化するために使用されます。
同様に、xs:gMonth
、xs:gDay
、xs:gYear
、xs:gYearMonth
、および xs:gMonthDay
のインスタンスは、DateTime オブジェクトにマップされます。 DateTime オブジェクトの未使用のプロパティは、MinValue の値で初期化されます。
注意
内容が DateTime.Year として型指定されている場合は、xs:gMonthDay
値は信頼できません。 この場合、DateTime.Year 値は常に 1,904 に設定されています。
xs:anyURI および System.Uri
相対 URI を表す xs:anyURI
のインスタンスが Uri にマップされている場合、Uri オブジェクトには基本 URI がありません。
関連項目
.NET