Restricciones inteligentes
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" 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:
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).
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:
Observe que el modelo de contenido incluye ahora unos controles que sirven para restringir el tipo derivado de este ejemplo:
•El icono 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 . Para volver a añadirlo, haga clic en este icono .
•En el compositor de opción Choice haga clic en el icono en forma de flecha y aparece una lista con la que puede cambiar el modelo de grupo de Choice a Sequence:
Los comodines también se pueden cambiar así, con el icono en forma de flecha. Por ejemplo: |
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 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.
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:
Este ejemplo muestra atributos cuyos tipos de datos se restringieron en el tipo complejo derivado: |
•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:
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. |