属性セットと要素のコンテンツを決定する複合型を定義します。
<complexType
abstract = Boolean : false
block = (#all | List of (extension | restriction))
final = (#all | List of (extension | restriction))
id = ID
mixed = Boolean : false
name = NCName
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all |
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>
属性
abstract
インスタンス ドキュメント内で複合型を使用できるかどうかを示すインジケータ。この値が true の場合、要素は直接にはこの複合型を使用できず、この複合型からの派生複合型を使用する必要があります。既定値は false です。省略可能です。
block
派生の種類。block 属性は、指定した種類の派生を持つ複合型がこの複合型の代わりに使用されないようにします。値として、#all か、あるいは extension または restriction のサブセットであるリストを設定できます。block 属性は、検証中にインスタンス ドキュメントが schema-instance:type 属性を使用して、要素の通常の型をオーバーライドするときだけ使用されます。block 属性は、拡張や制限によって定義される複合型を選択して要素に指定されている元の型を置き換えることができないようにする機能です。extension 拡張によって派生した複合型が、この複合型の代わりに使用されないようにします。 restriction 制限によって派生した複合型が、この複合型の代わりに使用されないようにします。 #all すべての派生複合型が、この複合型の代わりに使用されないようにします。 省略可能です。
final
派生の種類。final 属性は、この complexType 要素の、指定した種類の派生を抑止します。値として、#all か、あるいは extension または restriction のサブセットであるリストを設定できます。extension 拡張による派生を抑止します。 restriction 制限による派生を抑止します。 #all すべての派生 (拡張および制限の両方) を抑止します。 省略可能です。
id
この要素の ID。id の値は ID 型である必要があり、この要素を含んでいるドキュメント内で一意である必要があります。省略可能です。
mixed
この複合型の子要素の間に文字データを挿入できるかどうかを示すインジケータ。既定値は false です。simpleContent 要素が子要素の場合、mixed 属性は使用できません。
complexContent 要素が子要素の場合、この mixed 属性は complexContent 要素の mixed 属性でオーバーライドできます。
省略可能です。
name
型の名前。この名前は、『XML Namespaces』の仕様に定義されているとおり、コロンを含まない名前 (NCName) である必要があります。コンテナ要素が schema 要素の場合は必ず指定します。それ以外の場合は指定できません。
name を指定する場合、名前はすべての simpleType 要素および complexType 要素を通じて一意である必要があります。
省略可能です。
要素情報
出現回数 | スキーマ内では無制限。要素内では 1 回。 |
親要素 | element、redefine、schema。 |
コンテンツ | annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute。 |
解説
複合型の本質は、属性および要素を含んでいる要素のための型定義です。要素は、その要素の構造、コンテンツ、および属性を定義する complexType 要素を参照する type 属性によって宣言できます。要素は、その要素の type 属性内の simpleType を参照することもできます。
複合型には、複合型に許可されるコンテンツの型を決定する次の要素のいずれか 1 つだけを含めることができます。
要素 | 説明 |
---|---|
simpleContent | 複合型は、コンテンツとして文字データまたは simpleType を持ち、要素は含みません。しかし、属性を含めることはできます。 |
complexContent | 複合型は、要素だけを含むか、または要素コンテンツを含みません (空です)。 |
group | 複合型は、参照先のグループに定義されている要素を含みます。 |
sequence | 複合型は、指定したシーケンスで定義された要素を含みます。 |
choice | 複合型に、choice 要素に指定した要素のうちの 1 つを含めることができます。 |
all | 複合型に、all 要素に指定したいずれかの要素またはすべての要素を 1 回含めることができます。 |
group、sequence、choice、または all を子要素として指定した場合、complexType の属性は、オプションで次の要素を使用して宣言できます。
要素 | 説明 |
---|---|
attribute | 複合型は、指定した属性を含みます。 |
attributeGroup | 複合型は、参照先の attributeGroup に定義されている属性を含みます。 |
anyAttribute | 複合型に、指定した名前空間 (複数の場合もある) からの属性を含めることができます。 |
任意の数の attribute 要素または attributeGroup 要素を使用できます。anyAttribute の 1 つのインスタンスを使用することもできます。
group、sequence、choice、または all を指定する場合は、これらの要素を次の順序で指定する必要があります。
- group |sequence |choice |all
- attribute |attributeGroup
- anyAttribute
例
属性を持つ単純型 (decimal) および複合型を使用する要素宣言を含む複合型の例を次に示します。
<xs:complexType name='internationalShoeSize'>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>
XML ドキュメント内の myShoeSize 要素のインスタンスの例を次に示します。
<myShoeSize sizing='UK'>10.5</myShoeSize>
要素内に無名の complexType が定義されている myShoeSize 要素の例を次に示します。name 属性が指定されていないことに注意してください。
<xs:element name='myShoeSize'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
参照
XML スキーマ リファレンス (XSD) | XML スキーマの要素
詳細については、http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#element-complexType で、W3C『XML Schema Part 1: Structures Recommendation』を参照してください。