XML Schema complexType 要素

定義と用法

complexType 要素は複雑なタイプを定義します。複雑なタイプの要素は、他の要素および/または属性を含む XML 要素です。

元素信息

要素情報 出現回数
スキーマ内では無制限;要素内では1回。 親要素
element、redefine、schema 内容

annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute

文法
<complexType 
id=ID 
name=NCName 
abstract=true|false
mixed=true|false
block=(#all|リストの(拡張|制限))
any attributes
final=(#all|リストの(拡張|制限))
> 
(annotation?,(simpleContent|complexContent|((group|all|
</complexType>

(? シンボルは complexType 要素内で宣言され、要素は0回または1回出现できます、* シンボルは要素が0回または複数回出现できます。)

属性

ID

オプション。この要素のユニークな ID を規定します。

名前

オプション。要素の名前を規定します。

抽象的

オプション。インスタンスドキュメントで複雑なタイプを使用できるかどうかを規定します。この値が true である場合、要素は直接この複雑なタイプを使用することができず、この複雑なタイプから派生した複雑なタイプを使用する必要があります。デフォルト値は false です。

ミックス

オプション。この複雑なタイプの子要素間に文字データが出现することを許可するかどうかを規定します。デフォルト値は false です。

  • simpleContent 要素が子要素である場合、mixed 属性は許可されません。
  • complexContent 要素が子要素である場合、この mixed 属性は complexContent 要素の mixed 属性でオーバーライドされることができます。

ブロック

オプション。指定された派生タイプを持つ複雑なタイプがこの複雑なタイプを置き換えるために使用されることを防ぐ。この値は #all またはリストを含むことができます。このリストは拡張または制限のサブセットです:

  • 拡張 - この複雑なタイプを置き換えるために派生された複雑なタイプを使用することを防ぐ。
  • 制限 - この複雑なタイプを置き換えるために派生された複雑なタイプを使用することを防ぐ。
  • #all - すべての派生的な複雑なタイプが、この複雑なタイプに代わるために使用されるのを防ぎます。

final

オプション。指定された complexType 要素から派生する指定されたタイプを防ぎます。この値は #all または、extension または restriction のサブセットであるリストを含むことができます。

  • extension - 拡張を通じて派生を防ぎます。
  • restriction - 制限を通じて派生を防ぎます。
  • #all - すべての派生(拡張および制限)を防ぎます。

any attributes

オプション。non-schema ナンスペースを持つ他の属性を指定します。

例1

以下の例では、名前が「note」の複雑なタイプの要素があります:

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

例2

以下の例では、複雑なタイプ「fullpersoninfo」が、3つの追加の要素(address、city、country)を使用して、派生されたタイプを拡張し、別の複雑なタイプ「personinfo」から派生しています:

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

上記の例では、上の "employee" 要素は以下の要素を順序で含む必要があります:"firstname", "lastname", "address", "city" そして "country"。