Предположим, у меня есть переменные $a
, $b
, $c
и $d
которые все имеют номера. Я хотел бы получить наименьшее (наибольшее) значение. Мой типичный XSLT 1.0 подход к этому являетсяКак выбрать наименьшее значение из группы переменных?
<xsl:variable name="minimum">
<xsl:for-each select="$a | $b | $c | $d">
<xsl:sort
select="."
data-type="number"
order="ascending" />
<xsl:if test="position()=1"><xsl:value-of select="." /></xsl:if>
</xsl:for-each>
</xsl:variable>
Однако мой XSLT 1,0 процессор жалуется
runtime error: file stylesheet.xslt line 106 element for-each
The 'select' expression does not evaluate to a node set.
Как я могу вычислить минимум (максимум) заданных значений?
Конечно, я мог бы использовать длинную серию <xsl:when>
заявлений и проверить все комбинации, но я бы предпочел, как уменьшенная решение.
Основная проблема, я думаю, является то, что числа не являются узлами. – cHao
Я думаю, что основная проблема заключается в том, что в XSLT 1.0 выражение в 'select' должно оцениваться в наборе узлов. (http://www.w3.org/TR/xslt#for-each) –