Я не верю, что вы можете использовать параметры так, как вы описываете.Но если цель состоит в том, чтобы удалить повторяющееся кодирование, вы можете достичь этого с помощью именованного шаблона вместо переменной.
Например, вот именованный шаблон
<xsl:template name="schema_main">
<xsl:attribute name="itemtype">
<xsl:choose>
<xsl:when test="$list_type = 'hotels'">
<xsl:text>http://schema.org/Hotel</xsl:text>
</xsl:when>
<xsl:when test="$list_type = 'sight'">
<xsl:text>http://schema.org/CivicStructure</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="itemscope">itemscope</xsl:attribute>
</xsl:template>
Ичтобы вызвать его, чтобы добавить атрибуты к текущему элементу, вы просто должны сделать это
<div>
<xsl:call-template name="schema_main"/>
</div>
И тогда результат будет следующим:
<div itemtype="http://schema.org/Hotel" itemscope="itemscope" />
Это предполагает, что вы установили list_type для отелей.Обратите внимание, что можно передавать параметры в именованный шаблон, если list_type не является глобальным по объему.