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