XSL - Como puedo hacer...

 
Vista:

Como puedo hacer...

Publicado por Ayuda (2 intervenciones) el 31/05/2007 11:33:44
Tengo el siguiente xml:
(salto lo de siempre)
<var>
<nombre_variable fecha="fecha_en_formato_AAAMMDD"/>
<nombre_variable1 fecha="fecha_en_formato_AAAMMDD"/>
</var>

En el xml me pueden venir muchos hijos del tag var con nombres distintos que no se (los he llamado nombre_variable pero se supone que puede ser cualquier nombre)

Lo que quiero es mostrar en un html los nombres de las variables y la fecha en formato distinto al que están en el xsl:

<html>
<body>
fecha_en_formato_DD/MM/AAAA nombre_variable
fecha_en_formato_DD/MM/AAAA nombre_variable1
fecha_en_formato_DD/MM/AAAA nombre_variable2

</body>
</html>

Alguna idea de cómo podría hacerlo?
Espero que alguien pueda ayudarme.
Muchas gracias por adelantado
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

Transformación de fechas y nombres de variables en XML

Publicado por Alejandro (227 intervenciones) el 06/07/2023 00:50:22
Aquí tienes una solución utilizando XSLT para transformar las fechas y los nombres de variables en el XML a un formato distinto al que están en el XSL. Puedes aplicar esta solución a cualquier número de hijos del elemento `<var>` con nombres variables.

1
2
3
4
5
6
7
<!-- XML de entrada -->
<var>
  <nombre_variable fecha="fecha_en_formato_AAAMMDD"/>
  <nombre_variable1 fecha="fecha_en_formato_AAAMMDD"/>
  <nombre_variable2 fecha="fecha_en_formato_AAAMMDD"/>
  <!-- Agrega más elementos según sea necesario -->
</var>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!-- XSLT -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <!-- Plantilla principal -->
  <xsl:template match="/">
    <html>
      <body>
        <!-- Iterar sobre los hijos del elemento <var> -->
        <xsl:apply-templates select="var/*"/>
      </body>
    </html>
  </xsl:template>
  <!-- Plantilla para cada hijo del elemento <var> -->
  <xsl:template match="var/*">
    <xsl:variable name="fecha" select="@fecha"/> <!-- Obtener el valor del atributo 'fecha' -->
    <xsl:variable name="nombre" select="name()"/> <!-- Obtener el nombre del elemento -->
    <xsl:variable name="dia" select="substring($fecha, 7, 2)"/> <!-- Extraer el día de la fecha -->
    <xsl:variable name="mes" select="substring($fecha, 5, 2)"/> <!-- Extraer el mes de la fecha -->
    <xsl:variable name="anio" select="substring($fecha, 1, 4)"/> <!-- Extraer el año de la fecha -->
    <!-- Mostrar la fecha y el nombre de la variable en el formato deseado -->
    <xsl:value-of select="concat($dia, '/', $mes, '/', $anio, ' ', $nombre)"/>
    <br/>
  </xsl:template>
</xsl:stylesheet>

El resultado de aplicar este XSLT al XML de entrada será:

1
2
3
4
5
6
7
8
9
10
11
<html>
  <body>
    fecha_en_formato_DD/MM/AAAA nombre_variable
    <br/>
    fecha_en_formato_DD/MM/AAAA nombre_variable1
    <br/>
    fecha_en_formato_DD/MM/AAAA nombre_variable2
    <br/>
    <!-- Los demás elementos se mostrarán de la misma manera -->
  </body>
</html>

Asegúrate de reemplazar `nombre_variable`, `nombre_variable1`, `nombre_variable2` y otros posibles nombres con los nombres reales que puedan aparecer en tu XML. Además, puedes ajustar el formato de la fecha (por ejemplo, usando `MM/DD/AAAA` en lugar de `DD/MM/AAAA`) según tus necesidades.

Espero que esta solución te sea útil. ¡Buena suerte!
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