単純タイプ は、データ項目 (数値、ストリング、または日付など) の抽象的な定義です。
単純タイプの目的は、1 つ以上の単純エレメントの内容を定義することです。 単純タイプ (および単純タイプに基づくすべてのエレメント) は、属性および子エレメントを含むことができません。 単純タイプは、複合タイプとは対照的な存在です。複合タイプはエレメントの構造を定義しますが、一般には単純データを定義しません。
単純タイプは、グローバルまたはローカルとなります。 グローバル単純タイプは、複数のエレメントの基礎として使用できます。 これには、参照できる固有の名前が与えられなければなりません。 ローカル単純タイプは、単一のエレメントに関連しており、メッセージ・モデル内の他の場所で再利用するために利用できません。 ローカル・タイプには名前がなく、無名タイプと呼ばれることがあります。
XML スキーマは、すぐに使用できる多数の単純タイプを定義しており、これにはストリング、整数、10 進数、および浮動小数点などのすべての標準データ・タイプが含まれています。
ユーザー独自の単純タイプは、制限により別の単純タイプ (基本タイプ) から派生させることで定義できます。 制限タイプは、それに適用される値制約を持つことができます。
制限タイプは、組み込みの単純タイプまたは制限単純タイプから派生させることができます。
XML メッセージの場合のみ、リスト・タイプは、XML の反復する単純値をレンダリングする 1 つの方法です。 その表記は反復エレメントの表記よりもコンパクトで、複数値の属性を割り当てる方法を提供します。
リスト・タイプはユニオン・タイプを基にすることができます (このセクションで後ほど取り上げます)。 これは、スペースで区切られた項目リストを記述し、その中の各項目はユニオン内のいずれかの単純タイプを基にすることができます。
リストのリストは不正です。 リストの項目タイプは、リスト自体にすることはできず、どのレベルであれ、別のリスト・タイプから派生することもできません。
リスト・タイプは、minLength、maxLength、および length のファセットを適用することができます。 これらのファセットは、リスト内の項目の数を制限します。 リスト内の各項目の値を制限するには、ファセットをリスト自体ではなく項目タイプに適用する必要があります。 メッセージ定義エディターは、リスト・タイプに対する列挙およびパターン・ファセットの追加サポートを直接提供し、それらを使用するスキーマのインポートを可能にします。しかし、列挙およびパターン・ファセットがブローカーによって無視されるという警告が出されます。
ユニオン・タイプは、複数の他の単純タイプのユニオン (和集合) です。
ユニオン・タイプでは、複数の異なる単純タイプのいずれかに値を準拠させることができます。 ユニオン・タイプを構成する単純タイプはメンバー・タイプと呼ばれます。 存在できるメンバー・タイプの数には上限がありませんが、少なくとも 1 つ存在しなければなりません。 メンバー・タイプは、ユニオン・タイプ内で無名で定義された、組み込み単純タイプ、ユーザー定義の単純タイプ、またはローカル単純タイプとして定義することができます。
ユニオン・タイプには、そのメンバーに共通するリストおよび制限付き単純タイプを含めることもできます。
値制約は、XML スキーマによるファセットと呼ばれます。 派生したタイプに適用されるすべての値制約は、さらに基本タイプを制限する必要があります。 派生したタイプが、値制約の基本タイプが定義した値制約を弱めたり除去したりすることは無効です。 派生したタイプにどの値制約も適用されない場合、制限が関係しているような状況 (タイプの継承およびエレメントの置換) では、派生したタイプは基本タイプの制限として扱われますが、そのタイプはその基本タイプとほとんど同一です。