Ομάδες
Σε ένα στοιχείο complexType μπορούμε να ορίσουμε και τα παρακάτω στοιχεία
sequence: στοιχεία που πρέπει να εμφανιστούν με συγκεκριμένη σειρά
choice: επιλογή ενός από στοιχεία που ορίζουμε
all: όλα τα στοιχεία που ορίζουμε (όπως και στο sequence), αλλά χωρίς να έχει σημασία η σειρά
Μέσα σε κάθε ένα από τα παραπάνω στοιχεία μπορούμε να ορίσουμε ένα
βασικό στοιχείο (element) ή μια άλλη ομάδα.
Παράδειγμα σχήματος:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd= "http://www.w3.org/2001/XMLSchema" >
<xsd:element name= "javaProgram" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name= "package" type= "xsd:string" />
<xsd:element name= "import" type= "xsd:string" maxOccurs= "unbounded" />
<xsd:element name= "class" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name= "name" type= "xsd:string" />
<xsd:choice maxOccurs= "unbounded" >
<xsd:element name= "field" type= "xsd:string" />
<xsd:element name= "ctor" type= "xsd:string" />
<xsd:element name= "method" type= "xsd:string" />
</xsd:choice>
</xsd:sequence>
<xsd:attribute name= "extends" type= "xsd:string" use= "optional" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Παράδειγμα εγγράφου:
<?xml version="1.0" ?>
<javaProgram>
<package> gr.aueb.dds.bio</package>
<import> java.util.Date</import>
<import> java.math.BigDecimal</import>
<class extends= "Object" >
<name> Point</name>
<field> int x</field>
<field> int y</field>
<ctor> Point(int x, int y)</ctor>
<field> static int numPoints</field>
</class>
</javaProgram>