XSL - conseguir que esta variable funcione

 
Vista:

conseguir que esta variable funcione

Publicado por Raul (3 intervenciones) el 23/09/2004 11:58:02
Hola a todos

mi problema es el siguiente tengo esto

<xsl:value-of select="ancestor::node()/ancestor::node()/following-sibling::node()/PeriodoCapacidad/IntervaloCapacidad[3]/Ctd/@v"/>

por otro lado defino una variable
<xsl:variable name="posi" select="Pos/@v"/>

y cuando la variable a pesar de tener valores dentro del bucle , 1, 2, 3 y estar la linea
<xsl:value-of select="ancestor::node()/ancestor::node()/following-sibling::node()/PeriodoCapacidad/IntervaloCapacidad[$posi]/Ctd/@v"/>

justo detras, solo me coge el elemento 1, vamos como si pusiera

<xsl:value-of select="ancestor::node()/ancestor::node()/following-sibling::node()/PeriodoCapacidad/IntervaloCapacidad[1]/Ctd/@v"/>

y no el valor de posi

¿alguien que me ayude por favor????
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

Problema al utilizar una variable en una expresión XPath

Publicado por Alejandro (227 intervenciones) el 05/07/2023 00:09:34
Hola, Raúl.

El problema que estás experimentando se debe a cómo estás utilizando la variable `$posi` en tu expresión XPath. En XPath, cuando utilizas una variable en una expresión de selección, no puedes simplemente concatenarla dentro de la expresión como un valor. Debes utilizar la función `xsl:variable` en combinación con la función `xsl:evaluate` para evaluar dinámicamente la expresión XPath utilizando el valor de la variable.

Aquí te muestro cómo puedes ajustar tu código para lograrlo:

1
2
3
4
<xsl:variable name="posi" select="Pos/@v"/>
<xsl:variable name="expression" select="concat('ancestor::node()/ancestor::node()/following-sibling::node()/PeriodoCapacidad/IntervaloCapacidad[', $posi, ']/Ctd/@v')"/>
 
<xsl:value-of select="evaluate($expression)"/>

En este ejemplo, la variable `$expression` concatena la expresión XPath deseada con el valor de `$posi`. Luego, utilizamos la función `evaluate($expression)` dentro de `xsl:value-of` para evaluar dinámicamente la expresión XPath y obtener el valor deseado.

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