XML Schema 2章 Complex Type
	
- 2.1 XML Schema サンプル
 - 2.2 要素の宣言
 - 2.3 Complex Typeの定義
 - 2.4 子供要素
 - 2.5 sequence, choice, all
 - 2.6 minOccursとmaxOccurs
 - 2.7 モデルグループ
 - 2.8 いろいろなComplex Type
 - 2.9 まとめ
 
2.3 Complex Typeの定義
型には以下の2種類があります。
|  
       Complex Type  | 
    子供要素や属性をもつ要素の型 | 
|  
       Simple Type  | 
    子供要素や属性を含まない、内容に文字列しか含まない要素の型、あるいは属性の型 | 
例えば、以下のものはすべてComplex Typeです。
- 子供要素をもつ
 - 子供要素と子供要素の間に、テキストがあるようなもの
 - 属性を持つ
 
以下のものは、Simple Typeになります。
- 内容にテキストのみしか含まない要素
 - 属性値
 
型を新たに定義する場合、ComplexTypeとSimple Typeでは定義の方法が異なります。本章では、Complex Typeの型の定義方法について見ていきましょう。Complex Typeは、以下のようにcomplexType要素を使用して、定義します。
<complexType name="Complex Typeの名前" >
    要素の内容モデル
    属性の定義
</complexType> 
  定義したComplex Typeがどのような型なのかは、complexType要素の内容に記述されます。例えば、どの要素、属性が出現するのか、どの順番で出現するのか、出現回数はどうなっているか、等について、定められています。以下に例を示します。
<xsd:complexType name="USAddress"> 
  <xsd:sequence> 
    <xsd:element name="name" type="xsd:string"/> 
    <xsd:element name="street" type="xsd:string"/> 
    <xsd:element name="city" type="xsd:string"/> 
    <xsd:element name="state" type="xsd:string"/> 
    <xsd:element name="zip" type="xsd:decimal"/> 
  </xsd:sequence>
  <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/> 
</xsd:complexType>
  上の例では、USAddressという名前のComplex Type型を宣言しています。USAddress型は5つの要素(name、street、city、state、zip)と1つの属性(country)を含みます。5つの要素は、name、street、city、state、zipの順番で一度ずつ、出現します。
Complex Typeでは、子供要素に関して、以下の条件を指定することができます。
- どの要素が存在するか 
その型ではどのような要素が出現するか、指定します。 - 登場の順番に関する制限 
子供の要素が登場する順番、を指定することができます。また、子供要素のリストを記述し、そのうちどれかひとつが出現する、という指定も可能です。 - 登場回数に関する制限 
子供要素、およびその子供要素のグループが何回出現するか、出現回数を指定することができます。最小値と最大値を指定することができます。 
それでは、指定の方法について、見ていきましょう。

