2.5.3. 拡張による型の定義

ほとんどの主要なコーディング言語と同様に、XML スキーマを使用すると、他のデータ型から要素の一部を継承するデータ型を作成できます。これは、拡張による型の定義と呼ばれます。たとえば、planet という新しい要素を追加して、例2.4「複合型」 で定義される personalInfo 構造を拡張する、alienInfo という新しい型を作成できます。

拡張によって定義されるタイプには、次の 4 つの部分があります。

  1. 型の名前は、complexType 要素の name 属性によって定義されます。
  2. complexContent 要素は、新しい型に複数の要素があることを指定します。

    注記

    複合型に新しい属性を追加する場合にのみ、simpleContent 要素を使用できます。

  3. 新しい型が派生される ベース 型と呼ばれる型は、extension 要素の base 属性で指定されます。
  4. 新しい型の要素と属性は、通常の複合型と同様に extension 要素で定義されます。

たとえば、alienInfo は、例2.13「拡張子で定義されたタイプ」 のように定義されます。

例2.13 拡張子で定義されたタイプ

<complexType name="alienInfo">
  <complexContent>
    <extension base="xsd1:personalInfo">
      <sequence>
        <element name="planet" type="xsd:string"/>
      </sequence>
    </extension>
  </complexContent>
</complexType>