Altova XMLSpy 2024 Professional Edition 

Cuando se restringe un tipo complejo, partes del modelo de contenido del tipo base se vuelven a escribir en el tipo derivado. Esto puede ser algo difícil si el modelo de contenido es complejo. El motivo es que puede ser complicado recordar qué modelo de contenido tenía el tipo base mientras se edita el tipo derivado.

 

La función de restricción inteligente combina y correlaciona el modelo de contenido del tipo base con el del tipo derivado en la vista gráfica del modelo de contenido derivado. En el tipo complejo derivado se pueden ver todas las partículas del tipo complejo base y sus relaciones con el tipo derivado. Además, la restricción inteligente ofrece sugerencias visuales sobre todas las maneras posibles de restringir el tipo base. Con esta función es más fácil restringir correctamente el tipo derivado.

 

 

Para activar la función de restricción inteligente:

Haga clic en el icono "Habilitar restricción inteligente" ic_smart_res de la barra de herramientas Diseño de esquemas.

 

 

El ejemplo que aparece a continuación muestra las características de la restricción inteligente.

 

En este ejemplo el tipo base utilizado es el tipo complejo que aparece a continuación:

base_complexType

El tipo complejo derivado se deriva del tipo base de la siguiente manera:

 

1.Cree un tipo complejo nuevo en el esquema y llámelo derivado.

2.En el ayudante de entrada Detalles, seleccione base de la lista desplegable del campo base y restriction de la lista desplegable del campo derivedBy (es decir, lo derivamos por restricción).

derive_detailsEntHelper

En la vista del modelo de contenido del tipo derivado, active la función de restricción inteligente y el tipo derivado nuevo tendrá este aspecto:

derived_complexType

Observe que el modelo de contenido incluye ahora unos controles que sirven para restringir el tipo derivado de este ejemplo:

El icono ic_checkbox sirve para quitar del tipo derivado elementos que están en el tipo base. En este ejemplo, usamos este icono para quitar elem1 del tipo derivado. Para volver a añadirlo, haga clic en este icono ic_checkbox. Para volver a añadirlo, haga clic en este icono ic_plussign.

derived_elem_deleted

En el compositor de opción Choice haga clic en el icono en forma de flecha ic_down_arrow y aparece una lista con la que puede cambiar el modelo de grupo de Choice a Sequence:

model_group_restriction
Los comodines también se pueden cambiar así, con el icono en forma de flecha. Por ejemplo:
derived_wildcard
La especificación XML Schema contiene una lista que detalla qué partículas se pueden sustituir y con qué partículas.

 

Cambie el número de repeticiones del modelo de grupo con ayuda de este control ic_change_minoccur e incremente el número mínimo de repeticiones pulsando el signo + situado junto al número 1. O reduzca el número máximo de repeticiones pulsando el signo - situado junto al número 4. Estos controles están disponibles si el intervalo de repetición del tipo base describe un intervalo real (p. ej. 2-5) y no una cantidad concreta (p. ej. 4-4). Los controles también están disponibles si el rango de repetición no es correcto.

derived_change_minoccur
En este ejemplo puede ver que se cambió el número mínimo de repeticiones de este elemento a 2. Observe que el modelo de grupo ahora tiene un fondo de color azul. Esto indica que ya no es igual que el modelo de grupo del tipo complejo base. Además, el intervalo de repetición permitido del modelo de grupo de la partícula base aparece entre paréntesis.

Puede cambiar los tipos de datos de atributos o elementos si el tipo de datos nuevo es una restricción válida del tipo de datos base, de acuerdo con lo definido en la especificación XML Schema. Por ejemplo, puede cambiar el tipo de datos de elem3 del tipo de datos derived de decimal a integer. Tras los cambios, el elemento tiene un color de fondo azul, indicando que es diferente al elemento del tipo base. Además, el tipo que el elemento tiene en el tipo base aparece entre paréntesis:

 

derived_change_datatype
Este ejemplo muestra atributos cuyos tipos de datos se restringieron en el tipo complejo derivado:
derived_attrs

La función de restricción inteligente le avisa si el modelo de contenido incluye repeticiones innecesarias. Una repetición innecesaria tiene lugar si, por ejemplo, una secuencia del modelo de contenido no es necesaria. Este ejemplo muestra una repetición innecesaria:

pointless_occurrence
Nota: las repeticiones innecesarias sólo aparecen si el modelo de contenido incluye un error. Un modelo de contenido puede incluir una repetición innecesaria y ser válido, en cuyo caso la repetición innecesaria no se señaliza (para evitar confundir al usuario).

 

Consulte la especificación XML Schema para obtener más información sobre repeticiones innecesarias.

 

© 2018-2024 Altova GmbH