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 nos vários manuais sobre o 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 tipos válidos) 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 de seu tipo base se os elementos do tipo derivado tiverem um intervalo maior de valores válidos (ou membros de tipos válidos) do que os elementos do tipo base.
Por exemplo, uma extensão de um tipo complexo pode incluir membros de tipos que não estavam presentes no tipo base ou pode permitir que um membro de tipo se repita.
De forma semelhante, uma extensão de um tipo simples deve sempre ser um tipo complexo baseado no tipo simples. (Não é possível 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 podem ser removidas derivando outro tipo simples dele.
No entanto, um tipo complexo pode estender um tipo simples. Isso não afeta o intervalo de valores válidos do tipo simples, mas permite que sejam adicionados atributos. O resultado da extensão de um tipo simples é sempre um tipo complexo contendo 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 por grupos de substituição e a substituição de elemento pode ser bloqueada ou ter permissão para extensão e restrição pelas definições no próprio elemento ou no tipo do elemento.
A Substituição de Tipo permite que o tipo do elemento seja definido dentro do documento da instância, utilizando 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.