El lenguaje de esquema XML permite que una definición de tipo se base en otra definición de tipo. De esta manera, puede construirse una jerarquía de tipos. Este tema describe los conceptos de herencia de tipos y resalta algunos temas importantes relacionados con la sustitución.
Puede encontrar una descripción completa del tipo de esquema XML en el sitio Web del World Wide Web Consortium (W3C) o en numerosas publicaciones acerca del esquema XML.
Un tipo es una restricción de su tipo base si elementos del tipo derivado tienen un rango más reducido de valores legales (o miembros de tipo legal) que los elementos del tipo base.
Un tipo es una extensión de su tipo base si elementos del tipo derivado tienen un rango más amplio de valores legales (o miembros de tipos legales) que los elementos del tipo base.
Para la derivación de los tipos simples se aplican reglas especiales. Un tipo simple no puede extenderse a otro tipo simple. Esto asegura que las restricciones impuestas por un tipo simple no pueden ser eliminadas derivando otro tipo simple del mismo.
Sin embargo, un tipo complejo puede extenderse un tipo simple. Esto no afecta al rango de valores del tipo simple pero permite que se añadan atributos. El resultado de ampliar un tipo simple es siempre un tipo complejo que contiene cero o más atributos.
El atributo final en un tipo complejo puede tener tres valores, con los siguientes efectos:
El esquema XML proporciona dos mecanismos de sustitución distintos, los cuales utilizan la información de tipos de herencia para permitir o no las sustituciones.
La sustitución de elementos está controlada por los grupos de sustitución; la sustitución de elementos puede bloquearse o permitirse para la extensión y restricción mediante valores en los elementos o en el tipo del elemento.
La sustitución de tipos permite que se defina el tipo del elemento dentro del documento de instancia, utilizando el atributo xsi:type en el elemento, para que el tipo real del elemento no sea conocido hasta que el elemento haya sido particularmente analizado. Este mecanismo también puede ser bloqueado o permitido basándose en el método de derivación de los tipos implicados.