XML Schema complex types are essential components in defining the structure and content of XML documents. They allow you to create custom data types that can contain multiple elements and attributes, providing a powerful way to model complex data structures.
Complex types in XML Schema extend beyond simple data types like strings or integers. They enable you to define elements that can contain:
By using complex types, you can create reusable structures that accurately represent your data model, ensuring consistency across XML documents.
To define a complex type, you use the <complexType>
element within your XML Schema. Here's a basic example:
<xs:complexType name="PersonType">
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="Age" type="xs:positiveInteger"/>
</xs:sequence>
<xs:attribute name="ID" type="xs:ID" use="required"/>
</xs:complexType>
In this example, we've defined a complex type called "PersonType" that contains three elements (FirstName, LastName, and Age) and one attribute (ID).
Once defined, complex types can be referenced in element declarations. This allows you to reuse the same structure multiple times:
<xs:element name="Employee" type="PersonType"/>
<xs:element name="Customer" type="PersonType"/>
Both "Employee" and "Customer" elements now have the structure defined by the "PersonType" complex type.
Complex types can be extended or restricted using <extension>
or <restriction>
elements. This allows for creating hierarchies of types:
<xs:complexType name="EmployeeType">
<xs:complexContent>
<xs:extension base="PersonType">
<xs:sequence>
<xs:element name="Department" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Here, "EmployeeType" extends "PersonType" by adding a "Department" element.
Complex types can also allow mixed content, where elements can contain both text and child elements:
<xs:complexType name="ParagraphType" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="em" type="xs:string"/>
<xs:element name="strong" type="xs:string"/>
</xs:choice>
</xs:complexType>
This type allows for paragraphs with embedded emphasis and strong tags.
<xs:annotation>
elements.XML Schema complex types are powerful tools for defining structured data in XML. By mastering their use, you can create robust and flexible schemas that accurately represent your data models. As you delve deeper into XML Schema, explore related concepts like XML Schema elements and XML Schema attributes to gain a comprehensive understanding of XML document structure definition.