選択肢を作成する
要素に別の要素(または要素グループ)を含められるようにすっることもできます。このためには選択肢セットを使います。選択肢を定義するにはxsd:choice要素を使います。
1. <xsd:choice と入力します。
2. 必要であれば、minOccurs属性とmaxOccurs属性を使って、選択肢セット自体を指定できる回数を指定します。(「使用回数を指定する」)
3. > と入力して開始タグを終えます。
4. 選択肢セットを構成する各核要素を、指定する順序で宣言または参照します。
5. </xsd:choice> と入力します。
XSDコード <xsd:complexType name="place"/>
・・・・・・・・・・・・・・・・・・・
<xsd:choice>
<xsd:element name="subsections" type="subsectionType" / >
<xsd:sequence >
<xsd:element name="machine" type="xsd:string" / >
<xsd:element name="equipment" type="equipmentType" / >
</xsd:sequence>
</xsd:choice>
</xsd:complexType>subsectionのない場合もあります。subsectionがある場合はそれを指定し、subsectionがない場合はその他の要素だけを指定するようにします。
XMLコード<place>
<name language="Japanese">内科外来</name>
・・・・・・・・・・・・・・・・・・・
<subsections>診療室1</subsection>
<subsections>診療室2</subsection>
<subsections>診療室3</subsection>
<subsections>診療室4</subsection>
<subsections>診療室5</subsection>
<subsections>点滴室1</subsection>
<subsections>点滴室2</subsection>
<subsections>処置室
<machine>点滴ウォッチャー1</machine>
<machine>点滴ウォッチャー2</machine>
<machine>点滴ウォッチャー3</machine>
<equipment>点滴セット1<equipment>
<equipment>点滴セット2<equipment>
<equipment>点滴セット3<equipment>
<equipment>点滴セット4<equipment>
<equipment>点滴セット5<equipment>
<equipment>採血セット<equipment>
<equipment>尿検査セット<equipment>
</subsection>
</place>
上記のplace要素は、スキーマに対して有効です。
・minOccurs属性とmaxOccurs属性の規定値(どちらも1)では、XML文書では選択肢セット内の1つの要素しか指定できません。maxOccurs属性に1より大きい値を指定すれば、その回数だけ選択肢を指定することができます。maxOccurs="unbounded"を指定すれば、DTDで選択肢セットにアスタリスク(*)を追加するのと同じことになります。
・選択肢セットは、ネスとシーケンス、ほかの選択肢セット、名前付きグループへの参照(「名前付きグループを参照する」)を含めることもできます。
・選択肢セットは、複雑型定義(「要素のみを含む要素を定義する」参照)、シーケンス、ほかの選択肢グループ、名前付きグループ定義(「名前付きグループを参照する」参照)に含めることができます。
・xsd:choice要素は、DTDのパイプ(|:縦棒)に相当します。