XSL - Оценивает ли условное выражение «ярлык»? - PullRequest
4 голосов
/ 11 сентября 2009

С учетом оператора XSL 'If':

<xsl:if test="a = 'some value' and b = 'another value'">

Если a не равно 'some value', проверяется ли значение b еще? (Как будто первый тест - false, единственный результат and - false.) Это то, что делают языки, подобные C #, - мне было интересно, идет ли то же самое в XSL. Зависит ли это от движка / парсера?

Ответы [ 2 ]

4 голосов
/ 11 сентября 2009

Да, это называется ленивая оценка или короткое замыкание, и xsl поддерживает это. Смотри: http://www.w3.org/TR/xpath#booleans

и выражение оценивается вычисление каждого операнда и преобразование его значение для логического значения, как будто при вызове к булевой функции. Результат истина, если оба значения истинны и ложны иначе. Правильный операнд не оценивается, если левый операнд оценивается как ложное.

0 голосов
/ 11 сентября 2009

Да, это зависит от реализации. Но поскольку XSLT не имеет побочных эффектов (в отличие от C # и других языков, где в выражении может быть вызов функции, определяющий состояние или даже присваивание), это не имеет значения.

...