J'ai un appel assez complexe pour xsl: apply-templates:Comment utiliser une variable XSL dans xsl: apply-templates?
<xsl:apply-templates select="columnval[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
L'expression est réutilisée dans d'autres endroits comme celui-ci:
<xsl:apply-templates select="someothernode[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
Je veux généraliser en quelque sorte, donc je peux définir une fois et réutiliser ailleurs. Toutefois, cela ne semble pas fonctionner:
<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]"/>
Y at-il une meilleure/différente façon de le faire? Tout ce que je veux, c'est réutiliser l'expression xpath dans plusieurs appels différents à xsl: apply-templates (dont certains sélectionnent des enfants différents).
Cela va être utilisé dans une application client, donc je ne peux pas utiliser d'extensions ou passer à XSLT 2 malheureusement. :(
Merci.
Bonne question. Voir ma réponse pour une description de deux solutions possibles (XSLT 1.0 et XSLT 2.0) et un soupçon d'une solution plus puissante utilisant des fonctions d'ordre supérieur. –