Переменные являются неизменяемыми в XSLT, они имеют область видимости и видны от точки создания до конца их родительского элемента.
<xsl:when ...>
<xsl:variable ...>
</xsl:when>
определяет переменную как блок <xsl:when>
. Если существует переменная с таким именем, определенным перед блоком <xsl:choose>
, она будет «восстановлена» после того, как блок прошел, поскольку он больше не затеняется.
Правильный способ установки переменной - это обернуть <xsl:variable>
определение вокруг <xsl:choose>
блока, например:
<xsl:variable name="total">
<xsl:choose>
<!-- With Min/Max -->
<xsl:when test="$url-min != '' and $url-max != ''">
<xsl:value-of select="timeshare-search-results/pagination/@total-entries"/>
</xsl:when>
<!-- Without Min/Max -->
<xsl:otherwise>
<xsl:value-of select="timeshare-listings/pagination/@total-entries"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
Теперь $total
будет виден родительскому элементу блока <xsl:variable>
, который является блоком <xsl:template match="data">
.