5.Simple Content前章ではSimple Typeについて説明しました。では、属性を持つSimple Typeはどのように定義すればよいのでしょうか。本章では、型の「拡張」について説明したいとおもいます。
XML Schema 5章 Simple Content
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種類があります。
以下に例を示します。 <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です。 |
![]()
![]()
|