Tipos complejos y tipos simples

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Tutorial de XMLSpy > Esquemas XML: aspectos avanzados >

Tipos complejos y tipos simples

Después de definir el modelo de contenido de un elemento, puede decidir si desea volver a utilizar ese elemento en otra parte del esquema. Para ello puede crear un tipo complejo global o un elemento global a partir de la definición de ese elemento. En esta sección aprenderá a trabajar con tipos complejos globales. Primero creará un tipo complejo en el nivel global y después lo extenderá para poder utilizarlo en un modelo de contenido. Más adelante aprenderá a trabajar con elementos globales.

 

Crear un tipo complejo global

El elemento básico Address que definió en la sección anterior (que contiene los elementos Name, Street y City) puede volver a utilizarse pero con varios formatos. Por tanto, crearemos un tipo complejo a partir de esta definición de elemento y así podremos utilizarlo de nuevo.

 

Para crear un tipo complejo global:

 

1.En la vista del modelo de contenido, haga clic con el botón derecho en el elemento Address.
2.En el menú contextual seleccione Convertir en... | complexType global. Se crea un tipo complejo global llamado AddressType y se le asigna este tipo al elemento Address del modelo de contenido de Company. El contenido del elemento Address es el modelo de contenido de AddressType, que aparece dentro de un recuadro amarillo. Observe que ahora el tipo de datos del elemento Address es AddressType.

tut_17a

3.Haga clic en el icono "Mostrar nodos globales" ic_back2global para cambiar a la vista general del esquema, donde podrá ver todos los componentes globales del esquema.
4.En el ayudante de entrada "Componentes" haga clic en los iconos de expansión de las opciones element y complexType para ver las construcciones de esquema correspondientes.

La vista general del esquema ahora muestra dos componentes globales: el elemento Company y el tipo complejo AddressType. El ayudante de entrada "Componentes" también muestra el tipo complejo AddressType.

complextypes_schema_ovw

5.Haga clic en el icono "Vista del modelo de contenido" ic_component de AddressType para ver su modelo de contenido (ver imagen siguiente). Observe qué forma tiene el contenedor del tipo complejo.

tut_18a

Haga clic en el icono "Mostrar nodos globales" ic_back2global para volver a la vista general del esquema.

 

Extender la definición de un tipo complejo

Ahora vamos a usar el componente global AddressType para crear dos tipos de direcciones para sendos países. Pero antes debemos definir un tipo complejo nuevo basado en el componente básico AddressType y después extenderemos esa definición.

 

Para ello siga estos pasos:

 

1.Cambie a la vista general del esquema. (Si se encuentra en la vista del modelo de contenido, haga clic en el icono "Mostrar nodos globales" ic_back2global.)
2.Haga clic en el icono "Anexar" ic_tbl_append_row situado en la esquina superior izquierda de la vista. Aparecerá este menú:

tut_18b

3.Seleccione la opción ComplexType. Aparece una línea nueva en la lista de componentes y el cursor se coloca en el campo pertinente para que pueda escribir el nombre del componente.
4.Escriba US-Address y pulse la tecla Entrar. (Si en lugar de un guión escribe un espacio, el nombre del elemento aparecerá en color rojo. Esto indica que utilizó un carácter no válido.)

complextypes_ext_schema_ovw

5.Haga clic en el icono "Vista del modelo de contenido" ic_component de US-Address para ver el modelo de contenido del tipo complejo nuevo. El modelo de contenido está vacío (ver imagen siguiente).
6.En el ayudante de entrada "Detalles", haga clic en el cuadro combinado base y seleccione la opción AddressType.

complextypes_ext_contmod_view

Ahora la vista del modelo de contenido muestra el modelo de contenido de AddressType como modelo de contenido de US-Address (ver imagen siguiente).

complextypes_ext_contmod_view_2

7.Ya podemos extender el modelo de contenido del tipo complejo US-Address con un elemento para el código postal. Para ello, haga clic con el botón derecho en el componente US-Address y en el menú contextual seleccione la opción Agregar secundario | Sequence. Aparece un compositor de secuencia nuevo fuera del recuadro de AddressType (ver imagen siguiente). Esto indica que se trata de una extensión del elemento.

tut_20a

8.Haga clic con el botón derecho en el compositor de secuencia nuevo y seleccione Agregar secundario | Element.
9.Llame a este elemento Zip y pulse la tecla Tabulador. El cursor aparecerá en el campo de valor del descriptor de tipo.
10.Seleccione la opción xs:positiveInteger del menú desplegable y pulse la tecla Entrar para confirmar.

tut_20b

Ahora tiene un tipo complejo llamado US-Address, que está basado en el tipo complejo AddressType y que se extiende con un elemento para el código postal.

 

Tipos simples globales

De la misma manera que el tipo complejo US-Address está basado en el tipo complejo AddressType, también puede basar elementos en un tipo simple. Las ventajas son las mismas que para los tipos complejos globales: el tipo simple se puede volver a utilizar. Para poder volver a utilizar un tipo simple, antes debe definirlo como tipo simple global. En este tutorial definirá como tipo simple el modelo de contenido de un elemento para los estados de EE UU. Este tipo simple se utilizará como base para otro elemento.

 

Crear un tipo simple global

Para crear un tipo simple global antes debe anexar un tipo simple nuevo a la lista de componentes globales, darle un nombre y definir su tipo de datos.

 

Para crear un tipo simple global:

 

1.Cambie a la vista general del esquema. (Si se encuentra en la vista del modelo de contenido, haga clic en el icono "Mostrar nodos globales" ic_back2global.)
2.Haga clic en el icono "Anexar" y seleccione la opción SimpleType del menú contextual que aparece.
3.Llame US-State a este tipo simple que acaba de crear.
4.Pulse la tecla Entrar para confirmar. Se crea el tipo simple US-State y aparece en la lista de tipos simples del ayudante de entrada "Componentes" (haga clic en el icono de expansión de simpleType para verlo).

simpletypes_schema_ovw

5.En el ayudante de entrada "Detalles" (ver imagen siguiente), coloque el cursor en el campo de valor de restr y escriba xs:string o seleccione xs:string del menú desplegable del campo de valor de restr.

simpletypes_details_eh

Esto crea un tipo simple llamado US-State, que tiene el tipo de datos xs:string. Este componente global ya se puede usar en el modelo de contenido de US-Address.

 

Usar un tipo simple global en un modelo de contenido

Puede usar un tipo simple global en un modelo de contenido para definir el tipo de un componente. En nuestro ejemplo usaremos US-State para definir un elemento llamado State en el modelo de contenido de US-Address.

 

Siga estos pasos:

 

1.En la vista general del esquema, haga clic en el icono "Vista del modelo de contenido" ic_component situado junto al componente US-Address.
2.Haga clic con el botón derecho en el compositor de secuencia situado en la parte inferior y seleccione Agregar secundario | Element.
3.Llame a este elemento nuevo State.
4.Pulse la tecla Tabulador y el cursor se coloca en el campo de valor del descriptor de tipo.
5.Seleccione la opción US-State en el menú desplegable de este cuadro combinado.

tut_21b

Ahora el elemento State está basado en el tipo simple US-State.

 

Crear otro tipo complejo basado en AddressType

Ahora vamos a crear un tipo complejo global que contendrá direcciones en el Reino Unido (UK). El tipo complejo se basa en AddressType y se extiende para ajustarse al formato de las direcciones postales del Reino Unido.

 

Siga estos pasos:

 

1.En la vista general del esquema cree un tipo complejo global llamado UK-Address que debe basarse en AddressType (base=AddressType).
2.En la vista del modelo de contenido de UK-Address añada un elemento llamado Postcode que debe ser de tipo xs:string. Así debe ser el modelo de contenido de UK-Address:

complextypes_ext_contmod_view_3

Nota: en esta sección aprendió a crear tipos complejos y tipos simples globales, que se pueden usar en definiciones de modelos de contenido. La ventaja de usar tipos globales es que se pueden volver a utilizar en múltiples definiciones.

 


© 2019 Altova GmbH