Dadavariable en xsl: template coincidencia de patrones
Una hoja de estilo XSLT con una variable global:
<xsl:variable name="lang" select="/response/str[@name='lang']"/>
Pregunta
De dónde viene la limitación de que el uso de variables en los predicados es incorrecto en el patrón coincidente xsl:template
, pero es aceptable en xsl:apply-templates
¿patrón de selección?
<!-- throws compilation error, at least in libxslt -->
<xsl:template match="list[@name='item_list'][$lang]"/>
<!-- works as expected -->
<xsl:template match="list[@name='item_list'][/response/str[@name='lang']]"/>
<!-- works as expected -->
<xsl:template match="response">
<xsl:apply-templates select="list[@name='item_list'][$lang]">
</xsl:template>
No estoy seguro de que sea la limitación, pero ¿está seguro de que su '$ lang' contiene un valor de cadena (o numérico) pero no algún conjunto de nodos? – YuS
@yuri, contiene un conjunto de nodos, pero no veo una razón por la cual un conjunto de nodos no esté permitido en el contexto. – newtover
No puedo decirle detalles de por qué se especificó la restricción en XSLT 1.0, pero puedo decirle que ya no está en XSLT 2.0, por lo que es posible que desee considerar pasar a esa versión del lenguaje y una de sus implementaciones como Saxon 9 o AltovaXML. –