XSL - Listado de nodos

 
Vista:

Listado de nodos

Publicado por Alberto (6 intervenciones) el 24/10/2007 08:55:01
Necesito listar un conjunto de nodos y ponerlos en una tabla, rellenándola de izquierda a derecha y de arriba abajo. Teniendo en cuenta que el número de columnas es fija.

Si el xml es <REGISTROS><REGISTRO NOMBRE="UNO"/><REGISTRO NOMBRE="DOS"/><REGISTRO NOMBRE="TRES"/><REGISTRO NOMBRE="CUATRO"/><REGISTRO NOMBRE="CINCO"/><REGISTRO NOMBRE="SEIS"/></REGISTROS>

Quiero que se visualice así...
UNO DOS TRES
CUATRO CINCO SEIS

Si hago:
<table>
<for-each select="//REGISTROS/REGISTRO">
<tr>
<td>
<xsl:value-of select = "@NOMBRE"/>
</td>
</tr>
</for-each>
</table>
Esto sería una columna por valor.

El problema está con varias columnas...

La única solución bastante mala que se me ocurre es dividir el XML en tantos nodos como filas vaya a tener la tabla.

Gracias por la ayuda
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Listado de nodos

Publicado por Chucky (4 intervenciones) el 12/11/2007 23:27:32
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match='/'>
<table>
<xsl:for-each select="registros/registro">
<xsl:if test="position() mod 3 = 1"><xsl:text disable-output-escaping="yes"><tr></xsl:text></xsl:if>
<td>
<xsl:value-of select = "@nombre"/>
</td>
<xsl:if test="position() mod 3 = 0"><xsl:text disable-output-escaping="yes"></tr></xsl:text></xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

Por cierto, esto va bien en explorer, en firefox no, en java no lo he probado... pero no se en q lo quieres .

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Listado de nodos

Publicado por Alberto (6 intervenciones) el 13/11/2007 08:10:05
Es para java. Lo probaré a ver si funciona.

Muchas gracias

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar