Altova StyleVision 2023 Enterprise Edition

El ejemplo Persons.sps se basa en el esquema Persons.xsd y utiliza el archivo XML de trabajo Persons.xml. El archivo SPS está en la carpeta (Mis) Documentos C:\Documents and Settings\<usuario>\Mis Documentos\Altova\StyleVision2023\StyleVisionExamples\Tutorial\Grouping\Persons\. La estructura del documento XML es esta: un elemento de documento employees que puede contener un número ilimitado de empleados person. Cada empleado person tiene una estructura como esta:

 

<person first="Vernon" last="Callaby" department="Administration" grade="C"/>

 

En este diseño los empleados se agrupan por departamentos. Cada departamento se representa en una tabla distinta y los departamentos aparecen en orden alfabético ascendente. Dentro de cada tabla de departamento, los empleados se agrupan por puestos (en orden alfabético ascendente) y, dentro de cada puesto, los empleados aparecen en orden alfabético ascendente según su apellido.

 

Estrategia

La estrategia para crear estos grupos pasa por definir la agrupación en el elemento person y la clave de agrupación en el atributo department. Esto permite ordenar los elementos person por grupos según el valor del atributo department. Si especifica ordenar los grupos, los departamentos aparecerán en orden alfabético ascendente. Como los departamentos deben aparecer en tablas distintas, se crea una tabla con la plantilla current-grouping (basada en la clave de agrupación del atributo department). Después, dentro de cada grupo ordenado de elementos Person, indicamos que la clave de ordenación es el atributo grade.

 

Crear el diseño SPS

El diseño se creó de esta manera:

 

1.Arrastre el elemento Person desde la estructura del esquema y al soltarlo seleccione el comando Crear contenido.

2.Haga clic con el botón derecho en la etiqueta del elemento person y en el menú contextual seleccione el comando Agrupar por.

3.En el cuadro de diálogo "Definir la agrupación de los resultados" seleccione la opción agrupar-por, escriba la expresión XPath @department en el cuadro de texto Criterio de agrupación y después haga clic en Aceptar.

4.Aparece un cuadro de diálogo preguntando si los grupos deben ordenarse. Hacemos clic en porque queremos que los grupos aparezcan en orden alfabético ascendente (puede establecer, modificar o eliminar la ordenación más tarde si quiere).

5.Como cada grupo (departamento) debe aparecer en una tabla distinta, cree una tabla a partir del grupo actual. Para ello, haga clic con el botón derecho en la etiqueta current-group() (imagen siguiente) y seleccione el comando Convertir en | Tabla. Después seleccione los atributos secundarios @last y @grade como columnas de la tabla.

 

GroupingEx1a

 

6.Reorganice el contenido de las columnas y celdas de la tabla de modo que la primera columna contenga @grade y la segunda columna contenga los nodos @first y @last (imagen siguiente).

7.El siguiente paso es agrupar los elementos del grupo actual (nodos agrupados por departamento) por puestos. Para ello creamos una agrupación para el atributo grade en la plantilla current-group(). Acepte la ordenación predeterminada. Se crea una plantilla current-group() nueva (imagen siguiente).

8.Ordene este nuevo grupo (que es un subgrupo de personas agrupadas por puesto) por apellidos (atributo last).

 

GroupingEx1b

 

9.Aplique formato a la tabla.

10.Inserte un título encima de la tabla. Como cada tabla representa un departamento, puede obtener el nombre del departamento de forma dinámica desde el contexto actual. Esto puede hacerse con un cálculo automático que llame a la función current-grouping-key() de XPath 2.0/3.0.

11.Repita todo el proceso para crear el mismo resultado pero esta vez agrupe a los empleados primero por su puesto y después por departamento.

 

Para ver/editar las opciones de agrupación/ordenación de una plantilla, haga clic con el botón derecho en una plantilla y en el menú contextual seleccione Agrupar por / Ordenar por. En ambos casos aparece el cuadro de diálogo respectivo donde puede ver/editar las opciones.

 

© 2017-2023 Altova GmbH