Generate-id(key()) en XSL

Rokkuman
27 de Febrero del 2004
A las buenas,

Tengo creado un documento xml en donde tengo todos los datos y otro documento xsl en donde pongo como mostrarlos y ordenarlos.

En el xsl tengo que genere una key a partir de cada año:

Esto va en el encabezado:

<xsl:key name="year" match="desarrollos_x0020_Medida" use="anno"/>

Y esto va en el cuerpo:

<xsl:for-each select="//desarrollos_x0020_Medida[generate-id(.)=generate-id(key('year',anno))]">

Con esto consigo que me ordene los datos por año y que en cada año me muestre los datos que se reflejen en ese año:

<xsl:for-each select="key('year',anno)">

Pero hay dos partidas de un cliente en el mismo año que me gustaría ordenarlos bajo el mismo cliente, en vez de tener que repetir el nombre del cliente.

Estoy intentando volver a crear una key para así sacar las dos partidas del mismo cliente en un solo nombre mostrado, pero sólo me muestra la primera partida haciendo caso omiso de la segunda partida.

Algún consejo? Muchas gracias por adelantado y si hay alguna parte de mi texto que no queda del todo claro por favor hacédmelo saber y lo intentaré explicar de otro modo.

Manuel.

Rokkuman
27 de Febrero del 2004
A las buenas,

Ayer le estuve dando vueltas al tema y pensé: ¿Porqué no me funciona? ¿Estoy escribiendo mal la ruta? Y me puse a trabajar a ello.

Después de varios intentos vi que lo que tenía que hacer es generar la idkey para los clientes una vez que los había ordenado dentro de cada año, así que puse esto:

<xsl:for-each select="key('year',anno)[generate-id(.)=generate-id(key('client',clientes_nombre))]">

en vez de:

<xsl:for-each select="key('year',anno)">

Y así ya pude crear las tablas correspondientes para cada cliente con respecto a cada año:

<xsl:for-each select="key('client',clientes_nombre)">

Si alguno tenía la misma duda espero que con esto lo tenga claro. Al menos a mi me ha servido para salir del atolladero :)

Nos vemos.