XML Schema complexTypeElement


XML Schema 参考手册Complete XML Schema Reference Manual

Definition and Usage

The complexType element defines a complex type. An element of a complex type is an XML element that contains other elements and/or attributes.

Element Information

  • Parent element: element, redefine, schema

Syntax

<complexType
id=ID
name=NCName
abstract=true|false
mixed=true|false
block=(#all|list of (extension|restriction))
final=(#all|list of (extension|restriction))
any attributes
>

(annotation?,(simpleContent|complexContent|((group|all|
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))

</complexType>

(The ? sign declares that the element can occur zero or one time within the complexType element, and the * sign declares that the element can occur zero or more times.)

Attributes Description
id Optional. Specifies a unique ID for the element.
name Optional. Specifies the name of the element.
abstract Optional. Specifies whether the complex type can be used in instance documents. If this value is true, the element cannot directly use this complex type, but must use a complex type derived from this complex type. The default is false.
mixed

Optional. Specifies whether character data is allowed to appear between the child elements of this complex type. The default is false.

  • If a simpleContent element is a child, the mixed attribute is not allowed.
  • If a complexContent element is a child, this mixed attribute can be overridden by the mixed attribute of the complexContent element.
block

Optional. Prevents complex types with the specified derivation type from being used in place of this complex type. The value can contain #all or a list that is a subset of extension or restriction:

  • extension - prevents complex types derived by extension from being used in place of this complex type.
  • restriction - prevents complex types derived by restriction from being used in place of this complex type.
  • #all - prevents all derived complex types from being used in place of this complex type.
final

Optional. Prevents the specified types from being derived from this complexType element. The value can contain #all or a list that is a subset of extension or restriction.

  • extension - prevents derivation by extension.
  • restriction - prevents derivation by restriction.
  • #all - prevents all derivation (extension and restriction).
any attributes Optional. Specifies any other attributes with a non-schema namespace.

Example 1

The following example has a complex type element named "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>

Example 2

In the following example there is a complex type "fullpersoninfo" that is derived from another complex type "personinfo" by extending the inherited type with three additional elements (address, city, and country):

<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>

In the above example, the "employee" element above must contain the following elements in order: "firstname", "lastname", "address", "city", and "country".


XML Schema 参考手册Complete XML Schema Reference Manual Other extensions