Может быть, это не просто для xslt-professional, но для меня на начальном / среднем уровне это меня озадачило. Я хотел сделать то же самое, но мне нужно было протестировать значение responsetime из xml вместо простого числа. Следуя этой теме, я попробовал это:
<xsl:when test="responsetime/@value >= 5000 and responsetime/@value <= 8999">
, который выдал ошибку. Это работает:
<xsl:when test="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 8999">
Не совсем понимаю, почему без числа () это не работает. Может ли быть так, что без number () значение рассматривается как строка, и вы не можете сравнивать числа со строкой?
Во всяком случае, надеюсь, что это спасет кого-то много поиска ...