Il linguaggio Schema XML consente di basare la definizione del tipo su un'altra definizione del tipo. In questo modo è possibile creare una gerarchia di tipi. In questo argomento vengono descritti i concetti di eredità tipi e vengono evidenziati alcuni temi importanti relativi alla sostituzione.
E' possibile trovare una discussione completa sull'eredità dei tipi Schema XML sul sito Web World Wide Web Consortium (W3C) o in numerosi libri sugli schemi XML.
Un tipo è una restrizione del tipo di base se gli elementi del tipo derivato dispongono di un intervallo di valori consentiti (o di membri del tipo consentito) minore di quello degli elementi del tipo di base.
Ad esempio, è possibile che una restrizione di un tipo complesso riduca il numero di ricorrenze di uno dei membri del tipo o che ometta del tutto tale membro del tipo.
In modo analogo, è possibile che una restrizione di un tipo semplice riduca il valore del facet Massimo Incluso o aumenti il valore del facet Minimo Incluso.
Un tipo è un'estensione del tipo di base se gli elementi del tipo derivato dispongono di un intervallo di valori consentiti (o di membri del tipo consentito) maggiore di quello degli elementi del tipo di base.
Ad esempio, è possibile che un'estensione di un tipo complesso aggiunga i membri del tipo assenti nel tipo di base o consenta la ripetizione di un membro del tipo.
In modo analogo, è necessario che un'estensione di un tipo semplice siasempre un tipo complesso basato sul tipo semplice (non è possibile estendere un tipo semplice allargando l'intervallo dei valori legali).
Alla derivazione dei tipi semplici si applicano regole speciali. Non è possibile estendere un tipo semplice con un altro tipo semplice. Ciò garantisce che le restrizioni imposte da un tipo semplice non possano essere rimosse derivando un altro tipo semplice.
Tuttavia, è possibile estendere un tipo semplice con un tipo complesso. Ciò non influenza l'intervallo di valori legali del tipo semplice, ma consente di aggiungere attributi. Il risultato di un'estensione di un tipo semplice è sempre un tipo complesso in cui sono contenuti zero o più attributi.
Per l'attributo finale in un tipo complesso sono possibili tre valori, con le conseguenze riportate di seguito.
Con il linguaggio Schema XML sono disponibili due meccanismi di sostituzione che consentono o meno le sostituzioni utilizzando informazioni sull'eredità del tipo.
La sostituzione elemento è controllata dai gruppi di sostituzione ed è possibile bloccarla o consentirla per estensione o restrizione mediante le impostazioni dell'elemento o del tipo di elemento.
La sostituzione tipo consente di definire il tipo di elemento nel documento di istanza utilizzando l'attributo xsi:type sull'elemento in modo da impedire il riconoscimento del tipo reale dell'elemento finché questo non è stato analizzato in parte. E' possibile inoltre bloccare o consentire tale meccanismo in base al metodo di derivazione dei tipi interessati.