tengo una llamada razonablemente complejo de xsl: apply-templates:Cómo usar la variable XSL en xsl: apply-templates?
<xsl:apply-templates select="columnval[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
La expresión se vuelve a utilizar en otros lugares de esta manera:
<xsl:apply-templates select="someothernode[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
quiero generalizar de alguna manera, por lo que puede definir una vez y reutilizarlo en otro lugar. Sin embargo, esto no parece funcionar:
<xsl:variable name="x">@id and not(@id='_Name_') and not(@id='Group') and not(@id='_Count_')</xsl:variable>
<xsl:apply-templates select="columnval[$x]"/>
<xsl:apply-templates select="someothernode[$x]"/>
¿Hay una manera mejor/diferente de hacer esto? Todo lo que quiero es reutilizar la expresión xpath en múltiples llamadas diferentes a xsl: apply-templates (algunas de las cuales seleccionan de diferentes hijos).
Esto se va a utilizar en una aplicación de cliente, por lo que no puedo utilizar ninguna extensión o cambiar a XSLT 2 por desgracia. :(
Gracias.
Buena pregunta. Consulte mi respuesta para obtener una descripción de dos soluciones posibles (XSLT 1.0 y XSLT 2.0) y una sugerencia de una solución más poderosa que utiliza funciones de orden superior. –