Compartir vía


Reutilización y derivaciones de tipos

Dentro del lenguaje de definición de esquemas XML (XSD), los tipos globales complejos proporcionan un mecanismo para definir un tipo de datos estructurado que se puede reutilizar y potencialmente redefinir en varias ubicaciones del esquema. Tal vez el ejemplo más clásico sea la estructura de una dirección, que incluye un nombre, la calle, la ciudad, el estado, etc. Asimismo, el propio nombre puede ser una estructura que incluya cadenas de nombre, segundo nombre y apellidos. Si esta estructura compleja está definida de forma global, se podrá utilizar en varias ubicaciones dentro del esquema, como una dirección de envío y una dirección de facturación.

XSD también proporciona mecanismos para derivar un tipo a partir de otro. Esto incluye tanto tipos de contenido simple como tipos de contenido complejo. Por ejemplo, se puede derivar un tipo nuevo a partir de un tipo de cadena simple (como xs:string) de modo que el tipo nuevo admita únicamente un número reducido de cadenas concretas como valores permitidos. Este tipo de derivación se conoce en XSD como derivación por restricción, ya que los valores permitidos por el tipo derivado son más restrictivos que los que admite el tipo base.

Un ejemplo de derivación con un tipo complejo puede ser el tipo de dirección que se ha indicado antes. Supongamos que el tipo de dirección se ha diseñado para las direcciones de un país y una región concretas, donde el propio valor de país o región se considera parte de la dirección. Para ampliar ese tipo de dirección de modo que abarque direcciones internacionales, puede derivar un tipo nuevo a partir del tipo de dirección original y, a continuación, incluir información adicional en el tipo derivado, como el país y la región. Este tipo de derivación se conoce en XSD como derivación por extensión, ya que el tipo derivado ha extendido el tipo base.

Esta sección describe la reutilización de tipos y las formas en las que se puede usar la derivación para redefinir tipos reutilizados.

En esta sección