目次へ

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では、子供要素に関して、以下の条件を指定することができます。

  • どの要素が存在するか
    その型ではどのような要素が出現するか、指定します。
  • 登場の順番に関する制限
    子供の要素が登場する順番、を指定することができます。また、子供要素のリストを記述し、そのうちどれかひとつが出現する、という指定も可能です。
  • 登場回数に関する制限
    子供要素、およびその子供要素のグループが何回出現するか、出現回数を指定することができます。最小値と最大値を指定することができます。

それでは、指定の方法について、見ていきましょう。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp