xslt evaluate

xslt - XSL. Evaluar la expresión



evaluate (1)

Si su procesador XSLT implementa las extensiones EXSLT , puede hacer referencia a una función que evalúa dinámicamente cadenas como expresiones XPath :

<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:dyn="http://exslt.org/dynamic" extension-element-prefixes="dyn" > <xsl:template match="content"> <xsl:apply-templates select="positions/position" /> </xsl:template> <xsl:template match="position"> <li> <a target="frDocument" href="{dyn:evaluate(reference)}"> <xsl:value-of select=" $resources/lang:resources/lang:record[@id=current()/localizedName] "/> </a> </li> </xsl:template> </xsl:stylesheet>

Nota:

  • no hay necesidad de guardar cosas en una variable antes de usarlas
  • hay una función current() que podría haberse perdido
  • utilice <xsl:apply-templates> y <xsl:template> a favor de <xsl:for-each>

Lo siento por mi ingles.

XSL 1.0. ¿Cómo puedo calcular la expresión del elemento o valor del atributo?

Por ejemplo XML:

<position> <localizedName>ref-help</localizedName> <reference>concat(''../help/'', $lang, ''/index.html'')</reference> </position>

Intento usar la expresión del atributo ''referencia'':

<xsl:for-each select="/content/positions/position"> <li> <!--Save expression to variable...--> <xsl:variable name="path" select="reference"/> <!--Evaluate variable and set it value to ''href''--> <a target="frDocument" href="{$path}"> <xsl:variable name="x" select="localizedName"/> <xsl:value-of select="$resources/lang:resources/lang:record[@id=$x]"/> </a> </li> </xsl:for-each>

Pero me sale una cuerda:

file: /// C: / sendbox / author / application / support / concat (''../help/'',%20%24lang,%20''/index.html'')

¿Cómo puedo evaluarlo?

Saludos