目次へ

5.Simple Content

前章ではSimple Typeについて説明しました。では、属性を持つSimple Typeはどのように定義すればよいのでしょうか。本章では、型の「拡張」について説明したいとおもいます。

5.1 Complex Typeの作成

前章でSimple Typeの作成について説明した際に、既存のSimple Typeを基に新たに作成する、と説明しました。それでは、Complex Typeはどうでしょう。既存の型を基にして新たなComplex Typeを作成することは可能なのでしょうか。もちろん可能です。以下に例を示します。以下のようなSimple Typeの要素があります。

<xsd:element name="USPrice"  type="xsd:decimal"/>  

この、USPrice要素を変更して、以下のinternationalPrice要素を作成したいと考えます。

<internationalPrice currency="EUR">423.46</internationalPrice>

internaionalPrice要素は、属性を持ちます。よって、これは、Complex Typeです。しかし、子供要素をもちません。内容は、Simple Type ”decimal”と同じです。このように、既存の型、decimalにcurrency属性が追加された、新たなComplex Typeを定義することができます。

 
<complexType name="InternationalPriceType">
  <simpleContent>
    <extension base="xsd:decimal">
      <attribute name=currency type="xsd:string"/>
    </extension>
  </simpleContent>
</complexType>

上の例では、InternationalPriceTypeという、Complex Typeを新たに作成しています。基となる型はSimple Typeのdecimalです。それでは、Complex Typeの作成について、詳しく見ていきましょう。

5.2 Simple ContentとComplex Content

既存の型より新たなComplex Typeを作成する方法について説明する前に、Content Typeについて説明したいと思います。既存の型よりComplex Typeを作成する際には、作成する型がどのContent Typeなのか、認識する必要があります。Cotent Typeには、以下の2種類があります。

Simple Content

内容に子供要素を含まない型

Complex Content

内容に子供要素を含む型

以下に例を示します。

<items>
    <item partNum="872-AA">
      <productName>Lawnmower</productName>
      <quantity>1</quantity>
      <USPrice>148.95</USPrice>
      <comment>Confirm this is electric</comment>
    </item>
    <item partNum="926-AA">
      <productName>Baby Monitor</productName>
      <quantity>1</quantity>
      <USPrice>39.98</USPrice>
      <shipDate>1999-05-21</shipDate>
    </item>
</items>

上のXML文書の中では、itemsおよびitem要素は、Complex Typeになります。後の要素はSimple Typeです。itemsおよびitemは子供要素をもちます。よって、2つともComplex ContentのComplex Typeです。

<internationalPrice currency="EUR">423.46</internationalPrice>

上記、internationalPrice要素は、属性を持つためComplex Typeです。また、内容にはテキストしか含みません。よって、internationalPrice要素はSimple ContentのComplex Typeです。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp