要素のみを含む要素を定義する
他の要素を含めることのできる要素や、属性を持つことのできる要素は複雑型です。このような要素を持つXML文書は多いので、スキーマで複雑型を作成しなければならないことは数多くあります。
複雑型の要素には4種類あります。これらは、他の要素や属性だけを含みテキストを含まない「要素のみ」の要素、属性を含むことはあるが要素やテキストは含まない「空」の要素、要素と属性、テキストの組み合わせ(とくに要素とテキスト)を含む「混合コンテンツ」要素、テキストを含む(場合によっては属性も)「テキストのみ」の要素です。要素のみの要素
XMLコード <occupational_category>
<name language="Japanese>医師</name>
<name language="Latin>CCAC</name>
<name language="Japanese>看護師
<section>産婦人科</section>
<region>病棟</region>
<official_position>主任</official_position>
<qualification>助産婦</qualification>
</occupational_category>空の要素
XMLコード <source hospitalid="1031" departmentid="3010 "/>
<patientid="42768" examination_day="2007-05-15"/>
<picture filmname="chest_x-ray051501.jpg" x="400" y="800" >混合コンテンツ要素
XMLコード <desccription length="short">
<patient_name>山本浩平</patient_name>
正面単純像で、右肺尖に6cmに腫瘤を認める。
</desccription>テキストのみの要素
XMLコード <drip insertion=""vein" >ソルデム3A500ml 1本</drip>
最も基本的な複雑型の要素は、他の要素を含めることがd系増す。場合にっては属性も含みますが、テキストは含みません。このような内容を「要素のみ」と呼びます。複雑型を定義するにはxsd:complexType要素を使います。
1. <xsd:complexType と入力します。
2. name="label"と入力します。
labelの部分には複雑型の名前を入力します(これは要素の名前ではありません。この複雑型定義は、複数の要素の宣言で使う可能性があります)。
3. > と入力して開始タグを終えます。
4. シーケンス、選択肢、順序なしグループを定義するか、名前付きグループ(前の3つを含めることができる)を参照して、複雑型に含めることのできる要素を指定します。
5. この型の要素内に含める属性または属性グループがある場合は、それを宣言または参照します。
6. </xsd:complexType> と入力します。
XSDコード <xsd:complexType name="place"/>
<xsd:sequence>
<xsd:element name="zipcode_Japan" type="zipcode" / >
</xsd:sequence>
</xsd:complexType>これは、complexType定義の例です(これを使ってplace要素を定義しいます)。zipcodeTypeのzipcode_Japan要素を含みます。1つの複雑型にはほかの複雑型要素を含めることも珍しくありません。
・複雑型を作成したら、それを使って要素を宣言しなければなりません。詳細については「複雑型の要素を宣言する」を参照してください。
・複雑型に含まれる要素は、シーケンス、選択肢、順序なしグループ、名前付きグループのいずれかに含まれていなければなりません。