Herencia de tipo

El lenguaje del esquema XML permite basar una definición de tipo en otra definición de tipo. De este modo, se puede crear una jerarquía de tipos. En este tema se describen los conceptos de la herencia de tipo y se tratan algunos temas importantes relacionados con la sustitución.

Puede encontrar una descripción completa de la herencia de tipo del esquema XML en el sitio Web World Wide Web Consortium (W3C) o en los diferentes manuales que tratan acerca del esquema XML.

Restricción y extensión

Un tipo es una restricción de su tipo base si los elementos del tipo derivado tienen un rango de valores legales menor (o miembros de tipo legal) que los elementos del tipo base.

Un tipo es una extensión de su tipo base si los elementos del tipo derivado tienen un rango mayor de valores permitidos (o miembros de tipo permitidos) que los elementos del tipo base.

Se aplican normas especiales a la derivación de los tipos simples. Un tipo simple no puede ampliar otro tipo simple. Esto garantiza que las restricciones impuestas por un tipo simple no se pueden suprimir derivando otro tipo simple del mismo.

No obstante, un tipo complejo puede ampliar un tipo simple. Esto no afecta el rango de valores permitidos del tipo simple pero permite añadir atributos. El resultado de ampliar un tipo simple siempre es un tipo complejo que contiene cero o más atributos.

Controlar la herencia de tipo

El atributo final de un tipo complejo puede tomar tres valores con los efectos siguientes:

Herencia de tipo y sustitución

El esquema XML proporciona dos mecanismos de sustitución, los cuales utilizan la información de herencia de tipo para permitir o no las sustituciones.

La sustitución de elementos se controla mediante grupos de sustitución y se puede bloquear la sustitución de elementos o se puede permitir para extensiones y restricciones mediante los valores del propio elemento o del tipo del elemento.

La sustitución de tipo permite que el tipo de elemento se defina en el documento de la instancia, utilizando el atributo xsi:type del elemento, de modo que el tipo real del elemento no se conozca hasta que se haya analizado parcialmente el elemento. Este mecanismo también se puede bloquear o permitir basándose en el método de derivación de los tipos implicados.

Conceptos relacionados
Conceptos de diseño de mensajes
Objetos de modelo de mensaje