Предположим, у меня есть переменные $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 жалуется на
ошибка выполнения: файл stylesheet.xslt, строка 106, элемент для каждого
Выражение 'select' не соответствует набору узлов.
Как я могу вычислить минимум (максимум) заданных значений?
Конечно, я мог бы использовать длинную серию операторов <xsl:when>
и проверять все комбинации, но я бы предпочел меньшее решение.
select
должно оцениваться как набор узлов. (w3.org/TR/xslt#for-each) - person Daniel Haley   schedule 27.04.2012