У меня есть достаточно сложный вызов XSL: Наносить-шаблоны:Как использовать переменную XSL в xsl: apply-templates?
<xsl:apply-templates select="columnval[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
Выражение повторно использовать в других местах, как это:
<xsl:apply-templates select="someothernode[@id
and not(@id='_Name_')
and not(@id='Group')
and not(@id='_Count_')]"/>
Я хочу обобщать это как-то, так что я могу определить это один раз и повторно использовать его в другом месте. Однако это, похоже, не работает:
<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]"/>
Есть ли лучший способ для этого? Все, что я хочу, - это повторно использовать выражение xpath в нескольких разных вызовах xsl: apply-templates (некоторые из которых выбираются из разных дочерних элементов).
Это будет использоваться в клиентском приложении, поэтому я не могу использовать какие-либо расширения или переключиться на XSLT 2, к сожалению. :(
Спасибо.
Хороший вопрос. См. Мой ответ для описания двух возможных решений (XSLT 1.0 и XSLT 2.0) и намека на более мощное решение с использованием функций более высокого порядка. –