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では、子供要素に関して、以下の条件を指定することができます。
- どの要素が存在するか
その型ではどのような要素が出現するか、指定します。 - 登場の順番に関する制限
子供の要素が登場する順番、を指定することができます。また、子供要素のリストを記述し、そのうちどれかひとつが出現する、という指定も可能です。 - 登場回数に関する制限
子供要素、およびその子供要素のグループが何回出現するか、出現回数を指定することができます。最小値と最大値を指定することができます。
それでは、指定の方法について、見ていきましょう。