Кое-что, похожее на множественное наследование в некотором роде, может управляться с использованием именованной группы моделей и названных групп атрибутов; похоже ли это на множественное наследование так, как вы хотите, это то, что вы можете сказать.
Предположим, у вас есть сложные типы Учетная запись (как показано выше) и Клиент, и вы хотите, чтобы сложный тип CreditCardAccount наследовался от каждого из них. Как указывали другие, вы не можете указать два базовых типа в определении сложного типа. Но вы можете упаковать модель контента типов учетных записей и клиентов в именованные группы моделей и обратиться к соответствующей именованной группе из определения типа.
<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>
Затем вы можете обратиться к обоим названных групп из 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 валидатор не будет рассматривать типы клиентов, счета и CreditCardAccount как связанные в данном случае, что может или не может дело.
Конечно, более простой подход будет использовать элементы, как пакеты информации, а также определить элементы счета, клиент, и CreditCardAccount с CreditCardAccount, содержащей (сюрпризом) элементом счета и элементом Customer.