A linguagem do Esquema XML permite que uma definição de tipo seja baseada em outra definição de tipo. Dessa forma, uma hierarquia de tipos pode ser construída.
Este tópico descreve os conceitos de herança de tipo e realça algumas questões importantes relacionadas à substituição.
Uma discussão completa da herança de tipo de Esquema XML pode ser localizada no Web site W3C (World Wide Web Consortium) ou em vários manuais sobre Esquema XML.
Um tipo é uma restrição de seu tipo base, se os elementos do tipo derivado tiverem um intervalo menor de valores válidos (ou membros de tipo válido) do que os elementos do tipo base.
Por exemplo, uma restrição de um tipo complexo pode reduzir o número de ocorrências de um de seus membros de tipo, ou pode omitir totalmente esse membro de tipo.
De forma semelhante, uma restrição de um tipo simples pode reduzir o valor de aspecto Max Inclusivo ou aumentar o valor de aspecto Min Inclusivo.
Um tipo é uma extensão do seu tipo base, se os elementos do tipo derivado tiverem um intervalo maior de valores válidos (ou membros de tipo válido) do que os elementos do tipo base.
Por exemplo, uma extensão de um tipo complexo pode incluir membros de tipo que não estavam presentes no tipo base ou pode permitir que um membro de tipo seja repetido.
De maneira semelhante, uma extensão de um tipo simples deve ser sempre um tipo complexo que seja baseado no tipo simples; você não pode estender um tipo simples, ampliando seu intervalo de valores válidos.
Regras especiais se aplicam à derivação de tipos simples. Um tipo simples não pode estender outro tipo simples. Isso assegura que as restrições impostas por um tipo simples não possam ser removidas, derivando delas outro tipo simples.
No entanto, um tipo complexo pode estender um tipo complexo. Isso não afeta o intervalo de valores válidos do tipo simples, mas permite que os atributos sejam incluídos. O resultado de estender um tipo simples é sempre um tipo complexo que contém zero ou mais atributos.
O atributo final em um tipo complexo pode ter três valores, com os seguintes efeitos:
O Esquema XML fornece dois diferentes mecanismos de substituição e ambos utilizam as informações de herança de tipo para aceitar ou rejeitar substituições.
A Substituição de Elemento é controlada pelos grupos de substituição e pode ser bloqueada ou permitida para extensão e restrição, configurando o próprio elemento ou o tipo do elemento.
A Substituição de Tipo permite que o tipo do elemento seja definido dentro do documento da instância, usando o atributo xsi:type no elemento, para que o tipo real do elemento não seja conhecido até que o elemento tenha sido parcialmente analisado. Este mecanismo também pode ser bloqueado ou permitido, com base no método de derivação dos tipos envolvidos.