Plantillas globales
En StyleVision puede definir una plantilla global para cualquier nodo o tipo del esquema o para cualquier nodo especificado en un patrón XPath.
Una plantilla global especifica las instrucciones para el nodo o tipo seleccionados y se invoca por medio de una llamada desde la plantilla principal, desde fragmentos de diseño o desde otras plantillas globales. El modelo de procesamiento es similar al de los lenguajes de programación declarativos, en el sentido de que se define una sola plantilla que se invoca varias veces. De este modo se puede usar una y otra vez una sola definición. Las plantillas globales se invocan en dos situaciones:
•Cuando un nodo o tipo de la plantilla principal se configuró para hacer referencia a su propia plantilla global (clic con el botón derecho en el componente en el diseño y después en Convertir en plantilla global).
•Cuando se inserta un marcador de posición (contenido) o (resto-de-contenido) dentro de un elemento o tipo de una plantilla local y el resto del contenido de dicho elemento o tipo incluye un nodo o tipo para el que existe una plantilla global.
Las plantillas globales son muy útiles si un nodo (o tipo) aparece dentro de varios elementos o en varias posiciones y para todas estas instancias del nodo (o tipo) basta un solo conjunto de instrucciones. Por ejemplo, imagine que el elemento para siempre debe tener el mismo formato, independientemente de si aparece en un elemento chapter, section, appendix o blockquote. En este caso lo más eficaz sería definir una plantilla global para el elemento para y después asegurarnos de que en la plantilla principal se procese correctamente la plantilla global del elemento para (por ejemplo, incluyendo //chapter/para en la plantilla principal y especificando que para hace referencia a su plantilla global. O incluyendo //chapter/title y después (contenido) o (resto-de-contenido) de modo que el resto del contenido del elemento chapter se procese con las plantillas globales y predeterminadas disponibles). Además, puede definir una plantilla global para un tipo complejo (uno que define un modelo de dirección, por ejemplo) o incluso para un tipo simple (xs:decimal, por ejemplo). En estos casos, todas las instancias del tipo (complejo o simple) que invocan a la plantilla global de dicho tipo se procesarán de acuerdo con las reglas de la plantilla global.
Crear una plantilla global
Puede crear plantillas globales para cualquier nodo/tipo del esquema o para cualquier nodo especificado en un patrón XPath. Las plantillas globales se crean en la ventana Estructura del esquema (imagen siguiente).
Las plantillas globales se pueden crear de varias maneras:
•En la ventana Estructura del esquema: haga clic en el icono Agregar plantilla global nueva situado a la derecha de la entrada Plantillas globales (imagen anterior). Aparece un diálogo llamado "Agregar plantilla global nueva" (imagen siguiente). En este cuadro de diálogo puede seleccionar un elemento/atributo/tipo del esquema o introducir un patrón XPath. Para terminar haga clic en Aceptar. La plantilla se crea y se anexa a la lista de plantillas en la vista Diseño, donde se puede editar. En la ventana Estructura del esquema el nodo/tipo del esquema aparece marcado y con el signo +.
•En la ventana Estructura del esquema: haga clic con el botón derecho en el nodo/tipo del esquema (bajo la entrada Elementos raíz, Todos los elementos globales o Todos los tipos globales) y después seleccione el comando Convertir en plantilla global o quitarla. La plantilla se crea y se anexa a las plantillas ya existentes en la vista Diseño, donde se puede editar. En la ventana Estructura del esquema, el nodo/tipo del esquema aparece marcado y con el signo +.
•En la vista Diseño a partir de otras plantillas de la plantilla principal: haga clic con el botón derecho en la plantilla (en la vista Diseño o en la ventana Estructura del esquema) y seleccione el comando Convertir en plantilla global del menú contextual. Como resultado se crea una plantilla global a partir de la plantilla seleccionada (se anexa a las demás plantillas en la vista Diseño) y la plantilla está definida automáticamente para usar esta plantilla global (siga leyendo para obtener más información).
En la vista Diseño la plantilla global está debajo de la plantilla principal y se señala con una barra de color malva que contiene el nombre del nodo para el que se creó la plantilla global seguido del tipo (simple o complejo). A continuación puede ver la representación gráfica de una plantilla global
Note that the processing of the global template is user-defined and could include bot static and dynamic components, as well as the whole range of processing options available for processing of the main template.
Usar una plantilla global
Una vez creada, la plantilla global se utiliza cada vez que se inserte en el documento un nodo con el mismo nombre completo que la plantilla global. Cuando coloque el nodo en el diseño, seleccione el comando Utilizar plantilla global del menú contextual que aparece. Si en el diseño hay una plantilla local con un nombre completo idéntico al de un nodo para el que existe una plantilla global, puede utilizarse la plantilla global en lugar de la plantilla local. Para usar una plantilla global en lugar de una plantilla local, haga clic con el botón derecho en la plantilla local en la vista Diseño y seleccione el comando Utilizar plantilla global. Cuando se utiliza una plantilla global, se invocan sus instrucciones de procesamiento y la plantilla local las utiliza en tiempo de ejecución.
Cada vez que se utiliza la plantilla global en el diseño, se puede crear un patrón XPath en la plantilla global para filtrar el conjunto de nodos al que apunta. Para crear un filtro así, haga clic con el botón derecho en la etiqueta de la plantilla global en la vista Diseño y seleccione el comando Editar filtro de XPath del menú contextual. Al hacer clic en este comando se abre el diálogo Editar expresión XPath, donde puede introducir la expresión necesaria.
Plantillas globales recursivas
Las plantillas globales pueden ser recursivas, es decir, pueden llamarse a sí mismas. Sin embargo, para evitar bucles sin fin en la vista Authentic, puede establecer una propiedad para limitar la profundidad de la llamada. Se trata de la propiedad Profundidad máxima de llamada a plantillas, disponible en la pestaña Authentic del cuadro de diálogo "Propiedades" del archivo SPS (Archivo | Propiedades). Esta propiedad define el máximo de llamadas a plantillas que se pueden hacer de forma recursiva durante el procesamiento para la vista Authentic. Si el número de llamadas a plantillas supera el número especificado en esta propiedad, StyleVision devuelve un error.
Crear una copia local de la plantilla global
Una vez creada la plantilla global, sus instrucciones de procesamiento se pueden copiar directamente en una plantilla local de la plantilla principal que tenga el mismo nombre completo. Esto se consigue haciendo clic con el botón derecho en la plantilla local y seleccione el comando Crear copia local de la plantilla global. Crear una copia local no es lo mismo que usar la plantilla global (en tiempo de ejecución) porque las instrucciones de procesamiento se copian solo de manera puntual. La plantilla global no tiene más influencia en la plantilla local. A partir de ese momento, la plantilla global o la plantilla local (o ambas) se pueden modificar independientemente la una de la otra. Por otro lado, si se especifica que una plantilla local debe utilizar una plantilla global (en tiempo de ejecución), todos los cambios realizados en la plantilla global se reflejarán en la plantilla local en tiempo de ejecución.
Activar y desactivar las plantillas globales
Para activar una plantilla global marque su casilla en la ventana Estructura del esquema. Para desactivarla vuelva a hacer clic en la casilla. Si una plantilla global está activada (opción predeterminada cuando se crea la plantilla global), se genera en la hoja de estilos XSLT. Si está desactivada, no se genera en la hoja de estilos XSLT pero se guarda en el diseño SPS. Las plantillas locales que usen una plantilla global desactivada no pueden hacer referencia a la plantilla global porque está desactivada y, por tanto, recurren a las plantillas predeterminadas de XSLT (que tienen el efecto conjunto de generar el contenido de los nodos de texto descendientes).
Las ventajas de poder activar/desactivar las plantillas globales son: (i) no es necesario borrar las plantillas globales que no se necesitan en un momento dado, basta con desactivarlas y volver a activarlas cuando se necesiten y (ii) si los nombres de las plantillas de hojas de estilos importadas entran en conflicto con los de plantillas globales existentes, basta con desactivar la plantilla global.
Quitar una plantilla global
Para quitar una plantilla global haga clic con el botón derecho en la plantilla global (bien en la vista Diseño, bien en la ventana Estructura del esquema) y seleccione el comando Convertir en plantilla global o quitarla del menú contextual.
Plantillas globales simples y complejas
Hay dos tipos de plantillas globales: simples y complejas. Las plantillas globales complejas están disponibles por motivos de compatibilidad con versiones previas. Es decir, si una plantilla global de un diseño SPS creado con una versión de StyleVision anterior a la versión 2006 contiene una tabla o una lista y el diseño se abre en StyleVision versión 2006 o superior, la plantilla global se abre como plantilla global compleja.
Las plantillas globales complejas se diferencian de las plantillas globales simples en la forma en que procesan el nodo para el que se creó la plantilla global. Cuando se encuentra la primera instancia del nodo en el documento, la plantilla global compleja procesa las demás instancias del nodo inmediatamente después. En cambio, la plantilla global simple procesa cada instancia del nodo solamente cuando se encuentra dicha instancia del nodo.
Es importante tener en cuenta que una plantilla global simple se convierte automáticamente en una plantilla global compleja si se crea un formato predefinido o una línea nueva alrededor del nodo de elemento para el que se creó la plantilla global. Como resultado la plantilla tendrá el comportamiento de una plantilla global compleja (ver párrafo anterior). Si prefiere que la plantilla global sea de tipo simple, elimine el formato predefinido (arrastre el nodo fuera del formato predefinido y después elimine el formato predefinido) o elimine la línea nueva (elimine el componente en la ventana Estructura del diseño) según corresponda. Para evitar la conversión automática de las plantillas globales simples en plantillas globales complejas, asegúrese de añadir el formato predefinido o la línea nueva dentro de las etiquetas del elemento para el que se creó la plantilla global.
Plantillas globales en archivos SPS modulares
Cuando se añade un módulo SPS dentro de un archivo SPS, las plantillas del módulo agregado están disponibles y se pueden usar en el archivo SPS modular. Para más información consulte la sección Archivos SPS modulares.