XSL - ¿Como crear una lista ordenada?

 
Vista:
sin imagen de perfil

¿Como crear una lista ordenada?

Publicado por Laura (1 intervención) el 31/03/2022 21:47:06
Hola buenas tardes, queria preguntarles como hacer una lista con xsl a partir de un xml. Yo tengo los dos codigos de abajo y las listas me salen asi:

1.leche entera harina mantequilla jamón serrano Huevos pan rallado

1.calabacines medianos patata mediana mantequilla leche agua sal

1.filetes de cinta de lomo fresca naranjas salsa de soja Maizena pimienta sal aceite

Pero yo quiero que salga asi:

1.leche entera
2. harina
3. mantequilla
3. jamón serrano
4. Huevos
5. pan rallado

1.calabacines medianos
2. patata mediana
3.mantequilla
4.leche
5. agua
6. sal

1.filetes de cinta de lomo fresca
2.naranjas
3.salsa de soja
4.Maizena
5.pimienta
6.sal
7.aceite

Muchas gracias :)

CODIGO XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xsl_recetas.xsl"?>
<recetas>
<receta>
<nombre>Croquetas de jamón</nombre>
<ingredientes tipo="aperitivo" celiacos="no">
<ingrediente cantidad="1" unidad="litro">leche entera</ingrediente>
<ingrediente cantidad="100" unidad="gramo">harina</ingrediente>
<ingrediente cantidad="100" unidad="gramo">mantequilla</ingrediente>
<ingrediente cantidad="250" unidad="gramo">jamón serrano</ingrediente>
<ingrediente cantidad="2" unidad="entero">Huevos</ingrediente>
<ingrediente cantidad="200" unidad="gramo">pan rallado</ingrediente>
</ingredientes>
</receta>

<receta tipo="primero" celiacos="si">
<nombre>Crema de calabacín</nombre>
<ingredientes>
<ingrediente cantidad="4" unidad="entero">calabacines medianos</ingrediente>
<ingrediente cantidad="1" unidad="entero">patata mediana</ingrediente>
<ingrediente cantidad="50" unidad="gramo">mantequilla</ingrediente>
<ingrediente cantidad="0.25" unidad="litro">leche</ingrediente>
<ingrediente cantidad="0.25" unidad="litro">agua</ingrediente>
<ingrediente cantidad="0.5" unidad="cucharilla">sal</ingrediente>
</ingredientes>
</receta>

</recetas>


CODIGO XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Practica recetas</title>
</head>
<body>
<h1>***Mis Recetas***</h1>
<xsl:apply-templates select="recetas"/>
</body>
</html>
</xsl:template>
<xsl:template match="recetas/receta">
<xsl:apply-templates select="ingredientes"/>
<br/>
</xsl:template>
<xsl:template match="ingredientes">
<xsl:value-of select="position( )"/>
<xsl:text>. </xsl:text>
<xsl:value-of select="."/>
<br/>
</xsl:template>
</xsl:stylesheet>
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 de listas de ingredientes

Publicado por Alejandro (227 intervenciones) el 07/07/2023 19:26:18
Para generar listas numeradas de ingredientes a partir del XML proporcionado, puedes modificar el código XSLT de la siguiente manera:

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
29
30
31
32
33
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
 
  <xsl:template match="/">
    <html>
      <head>
        <title>Practica recetas</title>
      </head>
      <body>
        <h1>***Mis Recetas***</h1>
        <xsl:apply-templates select="recetas/receta"/>
      </body>
    </html>
  </xsl:template>
 
  <xsl:template match="receta">
    <h2>
      <xsl:value-of select="nombre"/>
    </h2>
    <ol>
      <xsl:apply-templates select="ingredientes/ingrediente"/>
    </ol>
    <br/>
  </xsl:template>
 
  <xsl:template match="ingrediente">
    <li>
      <xsl:value-of select="concat(position(), '. ', .)"/>
    </li>
  </xsl:template>
 
</xsl:stylesheet>

Con esta modificación, se utiliza la etiqueta `<ol>` para generar una lista ordenada de ingredientes. Luego, el template que coincide con `<ingrediente>` crea elementos `<li>` dentro de la lista y utiliza `position()` para obtener el número de posición en la lista.

De esta manera, los ingredientes se mostrarán con un número consecutivo seguido de un punto y luego el nombre del ingrediente.

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