Mam dość skomplikowany wywołanie xsl: apply-templates:Jak używać zmiennej XSL w xsl: apply-templates?
<xsl:apply-templates select="columnval[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
Wyrażenie jest ponownie w innych miejscach tak:
<xsl:apply-templates select="someothernode[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
chcę generalizować go jakoś, więc mogę określić raz i ponownie użyć go gdzie indziej. Jednak to nie działa:
<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]"/>
Czy istnieje lepszy/inny sposób robienia tego? Wszystko, czego chcę, to ponowne użycie wyrażenia xpath w wielu różnych wywołaniach do xsl: apply-templates (niektóre z nich wybiera się z różnych dzieci).
To będzie używane w aplikacji klienckiej, więc nie mogę używać żadnych rozszerzeń lub przełączam się na XSLT 2 niestety. :(
Dzięki.
Dobre pytanie. Zobacz moją odpowiedź na opis dwóch możliwych rozwiązań (XSLT 1.0 i XSLT 2.0) oraz podpowiedź bardziej wydajnego rozwiązania wykorzystującego funkcje wyższego rzędu. –