Coś, co przypomina kilka dziedziczenie na kilka sposobów, może być zarządzane przy użyciu nazwanej grupy modeli i nazwanych grup atrybutów; to, czy przypomina wiele dziedziczenia w sposób, w jaki chcesz, to coś, co tylko Ty możesz powiedzieć.
Załóżmy, że masz konta typu złożonego (jak pokazano powyżej) i klienta, i chcesz, aby typ złożony CreditCardAccount dziedziczył po każdym z nich. Jak wskazali inni, nie można określić dwóch typów podstawowych w definicji typu złożonego. Można jednak spakować model zawartości Konta i typy klientów do nazwanych grup modeli i odnieść się do odpowiedniej nazwanej grupy z definicji typu.
<xs:group name="Account">
<xs:sequence>
<xs:element name="balance" type="xs:decimal"/>
<xs:element name="accountNo" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:group name="Customer">
<xs:sequence>
<xs:element name="custid" type="xs:int"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="phone" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:complexType name="Account">
<xs:sequence>
<xs:group ref="Account"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Customer">
<xs:sequence>
<xs:group ref="Customer"/>
</xs:sequence>
</xs:complexType>
Następnie można zwrócić się do obu wymienionych grup od CreditCardAccount:
<xs:complexType name="CreditCardAccount">
<xs:sequence>
<xs:group ref="Account"/>
<xs:group ref="Customer"/>
<xs:element name="expiryDate" type="xs:date"/>
<xs:element name="issuer" type="xs:string"/>
<xs:element name="type" type="xs:string"/>
</xs:sequence>
</xs:complexType>
XSD walidator nie uzna Klienta typów kont, a CreditCardAccount jako związane w tym przypadku, co może lub nie może materia.
oczywiście prostsze podejście byłoby użyć elementy jak pakiety informacji i zdefiniować elementy konto, klient, i CreditCardAccount z CreditCardAccount zawierającej (niespodzianka) element rachunku i elementu Klienta.