XML スキーマ複合空要素
XSD 空の要素
空の複合要素にはコンテンツを含めることはできませんが、属性のみを含めることができます。
複合空要素:
空の XML 要素:
<product prodid="1345" />
上記の「product」要素にはコンテンツがまったくありません。コンテンツのない型を定義するには、コンテンツに要素のみを含めることができる型を宣言する必要がありますが、実際には次のように要素を宣言しません。
<xs:element name="product" >
<xs:complexType>
<xs:complexContent>
<xs:restrictionbase="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:制限>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:complexContent>
<xs:restrictionbase="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:制限>
</xs:complexContent>
</xs:complexType>
</xs:element>
上記の例では、複合コンテンツを含む複合タイプを定義します。 complexContent 要素は、複合型のコンテンツ モデルを修飾または拡張するつもりであることを示しますが、整数修飾は属性を宣言しますが、要素コンテンツは導入しません。
ただし、この「product」要素は、よりコンパクトに宣言することもできます:
<xs:element name="product">
<xs:complexType>
<xs:属性名="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:属性名="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
または、complexType 要素に名前を付けてから、「product」要素の type 属性を設定し、complexType 名を参照することもできます (このメソッドを使用すると、複数の要素が同じ複合タイプを参照できます):
<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>