You can name a complex at the top-level types:
<xs:complexType name="person"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:integer"/> </xs:sequence> </xs:complexType>
And then you point to them with elements:
<xs:element name="person" type="my:person"/> <xs:element name="student" type="my:person"/> <xs:element name="parent" type="my:person"/>