XML スキーマ言語では、タイプ定義を他のタイプ定義に基づくものにすることができます。 このようにして、タイプの階層が構成されます。
このトピックでは、タイプ継承の概念の概要を示し、置換に関連するいくつかの重要な問題を特筆します。
XML スキーマのタイプ継承に関しては、World Wide Web Consortium (W3C) Web サイト、または XML スキーマに関する多くの資料の中に詳しい説明があります。
派生したタイプのエレメントに関する有効な値 (または有効なタイプ・メンバー) の範囲が基本タイプのエレメントよりも小さい場合、タイプはその基本タイプの制約事項となります。
例えば、複合タイプの制約事項は、そのタイプ・メンバーの 1 つが出現する回数を減らしたり、 そのタイプ・メンバーを完全に省略することがあります。
同様に、単純タイプの制約事項は、Max Inclusive ファセット値を小さくしたり、 Min Inclusive ファセット値を大きくすることがあります。
派生したタイプのエレメントに関する有効な値 (または有効なタイプ・メンバー) の範囲が基本タイプのエレメントよりも大きい場合、タイプはその基本タイプの拡張となります。
例えば、複合タイプの拡張は、基本タイプに存在しないタイプ・メンバーを追加したり、タイプ・メンバーの繰り返しを可能にします。
同様に、単純タイプの拡張は必ず、単純タイプに基づく複合タイプでなければなりません。 単純タイプは、単に有効値の範囲を広げることにより拡張することはできません。
単純タイプの派生には、特別な規則が適用されます。 単純タイプは、他の単純タイプを拡張できません。 これにより、単純タイプから別の単純タイプを派生させることによって、元の単純タイプによって課された制約事項を取り除くことができないようにします。
ただし、複合タイプが単純タイプを拡張することはできます。 これは単純タイプの有効な値の範囲には影響を与えませんが、属性を追加することは可能になります。 単純タイプを拡張すると、必ずゼロ個以上の属性を含む複合タイプになります。
複合タイプの「最終」属性に指定可能な 3 つの値とそれぞれの効果は、以下のとおりです。
XML スキーマは、2 つの異なる置換メカニズムを提供します。 それらはいずれもタイプ継承情報を使用して、置換を許可または不許可にします。
エレメント置換 は置換グループによって制御され、エレメント自体またはエレメントのタイプに指定された設定値に応じて、そのエレメント置換の拡張または制約事項をブロックまたは許可することができます。
タイプ置換 は、エレメントのタイプをエレメント上の xsi:type 属性を使用して、インスタンス文書内で定義できるようにして、エレメントを部分的に解析するまでエレメントの実際のタイプが知られないようにします。 このメカニズムも、関係するタイプの派生メソッドに応じてブロックまたは許可することができます。