XML Schema complexTypeElement
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
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.
|
| 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:
|
| 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.
|
| 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: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: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".
Complete XML Schema Reference Manual Other extensions