XSL - Evitar valores duplicados en xsl

 
Vista:

Evitar valores duplicados en xsl

Publicado por Alfredo (1 intervención) el 15/03/2015 18:32:34
Buenas tardes, quiero eliminar los valores repetidos en xslt y no encuentro información al respecto, ¿Alguien me puede ayudar?

Cuando quiero extraer los valores de autonomía, me sale repetido el valor Andalucía dos veces, y me gustaría que solo saliera una vez.


Gracias por la ayuda.


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>


<xsl:template match="/come">
<link rel="stylesheet" type="text/css" href="LMSGI05_O2.css"/>
<html>
<head>

Actividad 4
</head>
<body>
<div class="intro">


<h2> Confederacion ornitologica mundial</h2>

</div>

<div class="parte2">
<h3>Autonomías participantes</h3>

<xsl:for-each select="confederacion">


<xsl:sort select="autonomia" data-type="text" order="descending"/>
<ul>
<li> <xsl:value-of select=" autonomia"></xsl:value-of></li>
</xsl:for-each>

</body>
</html>


</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

Eliminación de valores repetidos

Publicado por Alejandro (227 intervenciones) el 07/07/2023 16:37:56
Aquí tienes una solución para eliminar los valores repetidos en XSLT:

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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8"/>
 
  <xsl:template match="/come">
    <link rel="stylesheet" type="text/css" href="LMSGI05_O2.css"/>
    <html>
      <head>
        <title>XSL - Eliminación de valores repetidos</title>
      </head>
      <body>
        <div class="intro">
          <h2>Confederacion ornitologica mundial</h2>
        </div>
 
        <div class="parte2">
          <h3>Autonomías participantes</h3>
          <ul>
            <xsl:for-each select="confederacion">
              <xsl:sort select="autonomia" data-type="text" order="descending"/>
              <xsl:if test="position() = 1 or autonomia != preceding-sibling::confederacion[1]/autonomia">
                <li>
                  <xsl:value-of select="autonomia"/>
                </li>
              </xsl:if>
            </xsl:for-each>
          </ul>
        </div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

En esta solución, hemos añadido una condición `<xsl:if>` dentro del bucle `<xsl:for-each>` para que solo se muestren los valores únicos. Se compara cada valor de autonomía con el valor de la autonomía anterior (`preceding-sibling::confederacion[1]/autonomia`) y solo se muestra si no coincide.

Esto asegurará que solo se muestre una vez cada valor de autonomía, eliminando las repeticiones.

Puedes utilizar este XSLT como base para tus consultas futuras y adaptarlo según tus necesidades específicas. ¡Espero que esto te sea de ayuda!
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