XSL - Tablas dinámicas en xslt

 
Vista:
sin imagen de perfil

Tablas dinámicas en xslt

Publicado por maribajar (1 intervención) el 10/07/2007 10:28:09
Buenos dias.
Les comento que yo estoy haciendo una consulta con jdbc y segun el resultado de la consulta creo un documento xml que posteriormente con una hoja de estilo xslt, le mostrare en una tabla.
El problema que tengo es el siguiente:
El documento xml que se genera tiene distinto tamaño segun la consulta que realice, es decir; el documento xml seria mas o menos de la siguiente forma:
<CONSULTA>
<RESULTADO>
<DOCUMENTO>
<nombredocbase> .... </nombredocbase>
<idenlacesdoc> ...... </idenlacesdoc>
<label> ........</label>
</DOCUMENTO>
</RESULTADO>
</CONSULTA>

Pero el tag documento se puede repetir de 1 a n veces, y los atributos de documento pueden aparecer 1 o n. Con el xslt usando la funcion count() puedo saber cuantos documentos y atributos del documento aparecen, pero el problema es saber como usar ese numero para crear la tabla.
Es decir, deberia de poder crear una tabla que dependiendo del numero de atributos del documento, que serian las columnas y segun el numero de documentos que serian las filas de la tabla, crear dicha tabla, pero claro tendra diferente tamaño segun la consulta que realiza.
Me podrian decir como puedo hacer esto, el xslt, lo genero con html. Que tendría que poner en este fichero para crear las tablas dinámicas en función de la consulta que genere.
Gracias de antemano.
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

Crear tablas dinámicas en función del resultado de una consulta

Publicado por Alejandro (227 intervenciones) el 06/07/2023 16:43:22
Para crear tablas dinámicas en función del resultado de una consulta en XML utilizando XSLT, puedes utilizar las capacidades de generación dinámica de elementos y estructuras de control en XSLT. Aquí tienes una solución básica para abordar este escenario:

1. En primer lugar, determina el número máximo de atributos del elemento `<DOCUMENTO>` en tu conjunto de resultados. Puedes utilizar la función `max()` y `count()` en combinación con XPath para obtener este número. Por ejemplo:

1
<xsl:variable name="maxAttributes" select="max(/CONSULTA/RESULTADO/DOCUMENTO/count(*))" />

2. A continuación, utiliza este número máximo de atributos para crear las columnas de la tabla. Puedes utilizar un bucle `xsl:for-each` para generar las celdas de encabezado de columna en función del número de atributos. Por ejemplo:

1
2
3
4
5
6
7
<table>
  <tr>
    <xsl:for-each select="1 to $maxAttributes">
      <th>Columna <xsl:value-of select="position()" /></th>
    </xsl:for-each>
  </tr>
</table>

3. Luego, utiliza otro bucle `xsl:for-each` para generar las filas de la tabla basadas en el número de elementos `<DOCUMENTO>`. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table>
  <!-- Encabezado de columna -->
  <tr>
    <xsl:for-each select="1 to $maxAttributes">
      <th>Columna <xsl:value-of select="position()" /></th>
    </xsl:for-each>
  </tr>
 
  <!-- Filas de la tabla -->
  <xsl:for-each select="/CONSULTA/RESULTADO/DOCUMENTO">
    <tr>
      <xsl:for-each select="*">
        <td><xsl:value-of select="."/></td>
      </xsl:for-each>
    </tr>
  </xsl:for-each>
</table>

En este ejemplo, se utiliza un bucle `xsl:for-each` para iterar sobre cada elemento `<DOCUMENTO>` y generar una fila en la tabla. Luego, otro bucle `xsl:for-each` se utiliza para iterar sobre cada atributo de `<DOCUMENTO>` y generar una celda en la fila.

Recuerda que este es solo un ejemplo básico y puedes personalizarlo según tus necesidades específicas. Puedes agregar estilos CSS, ajustar el formato de la tabla, agregar clases o identificadores a los elementos, etc.

Espero que esto te ayude a crear tablas dinámicas en función del resultado de tu consulta utilizando XSLT con HTML.
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