XSL - CREAR TABLAS DE ACUERDO A UNA LISTA

 
Vista:

CREAR TABLAS DE ACUERDO A UNA LISTA

Publicado por cristian (3 intervenciones) el 10/02/2012 21:25:52
Hola Tengo que mostrar una serie de tablas abajo de otra , pero no siempre es fija la cantidad de tablas, por ejemplo si en un nodo lista vienen 5 tablas debo mostrar una debajo de la otra con sus datos, pero pueden venir 2 o 1 o 3 o lo que sea...bien se me ocurrio crear una tabla debajo de un FOR EACH...(del nodo lista) pero no se acepta la creacion de una tabla debajo de un FOR EACH...a alguien se le ocurre una idea ??


gracias
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
Imágen de perfil de Alejandro

Generación dinámica de tablas desde datos variables

Publicado por Alejandro (227 intervenciones) el 07/07/2023 00:47:51
Sí, Cristian, puedes lograrlo utilizando un enfoque diferente en tu código XSLT. En lugar de intentar crear una tabla debajo de un bucle `xsl:for-each`, puedes usar plantillas recursivas para generar las tablas. Aquí tienes un ejemplo de cómo podrías abordar este problema:

Supongamos que tienes la siguiente estructura de datos XML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<datos>
  <lista>
    <tabla>
      <dato>Tabla 1 - Dato 1</dato>
      <dato>Tabla 1 - Dato 2</dato>
    </tabla>
    <tabla>
      <dato>Tabla 2 - Dato 1</dato>
      <dato>Tabla 2 - Dato 2</dato>
      <dato>Tabla 2 - Dato 3</dato>
    </tabla>
    <!-- Pueden haber más tablas -->
  </lista>
</datos>

Puedes utilizar las siguientes plantillas en tu código XSLT:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<xsl:template match="datos">
  <html>
    <body>
      <xsl:apply-templates select="lista/tabla" />
    </body>
  </html>
</xsl:template>
 
<xsl:template match="tabla">
  <table>
    <xsl:apply-templates select="dato" />
  </table>
</xsl:template>
 
<xsl:template match="dato">
  <tr>
    <td>
      <xsl:value-of select="." />
    </td>
  </tr>
</xsl:template>

En este ejemplo, la plantilla principal `<xsl:template match="datos">` define la estructura HTML general. Luego, la plantilla `<xsl:template match="tabla">` se aplica a cada `<tabla>` dentro de `<lista>` y genera una tabla HTML. Dentro de la tabla, se aplica la plantilla `<xsl:template match="dato">` a cada `<dato>` y genera las filas correspondientes en la tabla.

De esta manera, puedes manejar una cantidad variable de tablas y sus datos sin necesidad de crear una tabla dentro de un bucle `xsl:for-each`. Las plantillas se aplicarán de forma recursiva a cada elemento correspondiente, generando la estructura de tablas adecuada.

Espero que este enfoque te sea útil para mostrar las tablas de forma dinámica. Recuerda ajustar las plantillas según la estructura real de tus datos XML.
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