XSL - CONCATENAR VALORES DE ATRIBUTOS

 
Vista:

CONCATENAR VALORES DE ATRIBUTOS

Publicado por Hernan Garcia (1 intervención) el 24/01/2007 15:00:09
Tengo este trozo de XML
<extensions language="es">

<extension pattern="3002" partition="default" password="3002" displayName="Franklin Chacon" pin="" voiceMailPin="3002" email="root@localhost">
<canCall context="basico"/>
<canCall context="nacional"/>
</extension>

<extension pattern="3003" partition="directores" password="3003" displayName="Henry Londono" pin="" voiceMailPin="3003" email="root@localhost">
<canCall context="basico"/>
<canCall context="internacional"/>
</extension>
</extensions>

lo que quiero lograr es crear una variable mientras recorro las extension cuyo valor sea la concatenacion del valor de los atributos de sus hijos canCall

ejemplo:

contextComplejo = basico-nacional
contextComplejo=basico-internacional

alguna ayuda?
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

Concatenación de valores de atributos de elementos hijos en una variable

Publicado por Alejandro (227 intervenciones) el 05/07/2023 22:38:15
Para lograr la concatenación de los valores de los atributos de los elementos hijos `<canCall>` de cada `<extension>`, puedes utilizar el siguiente código en tu transformación XSL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
```xslt
<xsl:template match="extensions">
  <xsl:for-each select="extension">
    <xsl:variable name="contextComplejo">
      <xsl:for-each select="canCall">
        <xsl:value-of select="@context"/>
        <xsl:if test="position() != last()">
          <xsl:text>-</xsl:text>
        </xsl:if>
      </xsl:for-each>
    </xsl:variable>
 
    <!-- Aquí puedes utilizar la variable $contextComplejo como desees -->
    <xsl:v
alue-of select="$contextComplejo"/>

</xsl:for-each>
</xsl:template>
[/code]

Este código recorre cada elemento `<extension>` dentro de `<extensions>` y crea la variable `$contextComplejo`. Utiliza un bucle `<xsl:for-each>` para iterar sobre los elementos `<canCall>` y concatena sus valores de atributo `@context` utilizando `<xsl:value-of>`. Se agrega un guion (`-`) entre los valores de los atributos, excepto para el último elemento. Finalmente, puedes utilizar la variable `$contextComplejo` dentro del bucle o en cualquier parte que desees dentro de la plantilla.

Recuerda ajustar el código según tus necesidades y la estructura de tu transformación XSL.
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