- 4.1 Simple Typeの定義
- 4.2 ビルトイン Simple Type
- 4.3 Simple Typeの作成
- 4.4 Restriction
- 4.5 listとUnion
- 4.6 まとめ
4.5 listとUnion
既存のSimple Typeの「リスト」を、新たなSimple Typeとするには、list要素を使用します。 <
<simpleType name="SImple Type の名前"> <list itemType="リストにするSimple Typeの名前"/> </simpleType>
itemType属性の値に、どのSimple Typeをリストにするか、記述します。例を示します。
<orderDates>1999-12-21 2000-01-23 2000-05-05</orderDates>
各お客様がいつ注文を行ったか記録をとる、orderDatesという要素の型を新たに作るとします。orderDatesはdate型の値を複数連ねたものです。上の型の定義は以下のようになります。
<xsd:simpleType name="OrderDates"> <xsd:list itemType="xsd:date"> </xsd:simpleType>
上のように、「リスト」になっているものをlist Simple Typeといいます。対して、上記例のdateのように、リストの一つ一つの構成単位となるような型をAtomic Simple Typeといいます。リストにできるのは、Atomic Simple Typeのみです。他のSimple TypeやComplex Typeをリストにすることはできません。
さて、作ったlist Simple Typeを「制限」してさらに新たなSimple Typeを作成することも可能です。可能な制限は、length、minlength、maxlength、enumerationです。list Simple Typeにおける「長さ」とは、itemTypeに指定した型のデータの出現回数になります。上の例ですと日付が3回記述されていますので、長さは「3」です。
上のOrderDate型において、日付の出現回数を20回に制限するとします。maxlengthを使用して、新たにOrderDate型に制限を加えます。
<xsd:simpleType name="OrderDates"> <xsd:list itemType="xsd:date"/> </xsd:simpleType> <xsd:simpleType name="OrderDatesMaxTwenty"> <xsd:restriction base="OrderDates"> <xsd:maxlength value="20"/> </xsd:restriction> </xsd:simpleType>
既存の複数のSimple Typeをすべて含むようなSimple Typeを作るには、union要素を使用します。
<simpleType name="SImple Type の名前"> <union memberType="結合するSimple Type1 結合するSimple Type2 ... "/> </simpleType>
memberType属性の値の中に、結合するSimple Typeの名前を、スペースで区切って列挙します。
例えば、orderdateに関しては、記述方法を、yyyy-mm-dd、--mm-dd、どちらも許すとします。すると、orderdate要素の型は、以下のようになります。
<xsd:simpleType name="OrderDate"> <xsd:union base="xsd:date xsd:gMonthDay"/> </xsd:simpleType>
unionTypeは、Atomic Simple Typeとlist Simple Typeを接続することは可能です。
4.6 まとめ
- Simple Typeとは、子供要素を含まない型
- 標準のデータベースにあるデータ型のほとんどがSimple Typeとして用意されている
- Simple Typeを作成する場合は、既存のSimple Typeを基にする
- Simple Typeの作成方法には、Restriction、list、Unionがある