XSL - substring y key en for-each

 
Vista:

substring y key en for-each

Publicado por Chiki (2 intervenciones) el 29/10/2008 17:54:40
Hola,

Tengo diferentes fechas del año 2005, 2006, 2008 ...
y quiero extraer de la fecha solo el año(el 2005, 2006 ...) sin estar repetidos, mi pregunta es la siguiene: puedo hacer un for-each que contenga un substring y una key?

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

Extracción de años únicos de fechas

Publicado por Alejandro (227 intervenciones) el 06/07/2023 22:01:16
Para resolver tu consulta y todas las consultas que hagas en el futuro, te sugiero utilizar una combinación de funciones de manipulación de cadenas y claves (keys) en XSLT. Aquí tienes una solución para extraer los años únicos de las fechas:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- Declarar una clave para agrupar las fechas por año -->
<xsl:key name="yearKey" match="fecha" use="substring(., 1, 4)" />
 
<!-- Template principal -->
<xsl:template match="/">
  <xsl:variable name="fechas" select="tuNodoRaiz/fecha" />
  <xsl:for-each select="$fechas[generate-id() = generate-id(key('yearKey', substring(., 1, 4))[1])]">
    <!-- Extraer el año y mostrarlo -->
    <xsl:value-of select="substring(., 1, 4)" />
    <xsl:if test="position() != last()">, </xsl:if>
  </xsl:for-each>
</xsl:template>

En este ejemplo, asumimos que tienes un nodo raíz llamado `<tuNodoRaiz>` que contiene múltiples elementos `<fecha>`. Cada `<fecha>` es una cadena que representa una fecha completa, como "2005-01-01", "2006-06-15", etc.

El código utiliza una clave (key) llamada "yearKey" para agrupar las fechas por año. Luego, se realiza un bucle (for-each) a través de las fechas únicas utilizando la clave. La función `generate-id()` se utiliza para asegurarse de que solo se seleccionen las primeras fechas únicas de cada año.

Dentro del bucle, se extrae el año de cada fecha utilizando la función `substring()` y se muestra en la salida. También se agrega una coma y un espacio después de cada año, excepto para el último año.

Recuerda ajustar el código según la estructura específica de tu archivo XML y los nombres de los nodos y campos que contienen las fechas.

Con esta solución, podrás extraer los años únicos de las fechas sin repeticiones utilizando una combinación de substring y una clave en XSLT.
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