Programación en castellano
Inicio > Foros > XML > Generate-id(key()) en XSL
-Foros de debate

XML
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Generate-id(key()) en XSL
Enviado por Rokkuman el día 26 de febrero de 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.

 
Re: Generate-id(key()) en XSL
Enviado por Rokkuman el día 27 de febrero de 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.

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados