Условная логика
Теги <else>, <elseif> и <elseifnot>
Теги <else>, <elseif> и <elseifnot> помогают организовать проверку более сложных логических условий по сравнению с отдельными командами <if> и <ifnot>.
Тег <else> открывает блок, который воспроизводится лишь в том случае, если предыдущее условие (при вложении логических тегов – находящееся на том же уровне) было ложным. Если последнее логическое условие было истинным, блок <else> не обрабатывается.
В листинге 13.17 простое условие <if> проверяет переменную с именем answer. Если переменная не существует, то блок, заключенный между тегами <else> и </else>, обрабатывается; в противном случае – не обрабатывается.
Листинг 13.17. Использование тега <else>.
<lхр> <ifanswer> Thank you for supplying an answer. </if> <else> You nave not yet supplied an answer.<br/> <include src="forms/question.lxp" /> </else> </lxp>
Как упоминалось выше, теги <elseif> и <elseifnot> всего лишь сокращают объем записи. Они работают точно так же, как теги <if > и <ifnot>, вложенные в блок <else>. Например, следующие два блока функционально идентичны:
<if conditionl="true"> Condition 1 is True. </if> <eise> <if condition2="true"> Condition 2 is tnue. </if> </else> … <if conditioni="true"> Condition 1 is True. </if> <elseif condition2="true"> Condition 2 is true. </elseif>
Теги <else> повышают эффективность и упрощают дальнейшее сопровождение условных конструкции. При использовании тега <else> LXP автоматически следит за выполнением предыдущего условия, и вам не приходится проверять его заново в инвертированном виде.
В листинге 13.18 реализована та же логика, что в приведенном выше листинге 13.15, но объем кода сокращен за счет применения тега <else>.
Листинг 13.18. Последовательная проверка с использованием тега <else>.
<lхр> <if answer> <strong>You have supplied an answer!</strong><br /> <if answer="12"> Your answer is correct!<br /> <if cheatcode> You appear to be cheating, however. </if> <else> Congratulations for not cneating! </eise> </if> <else> Your answer of <putvar name="answer"> .though, is incorrect.<br /> </else> </if> <else> You have not yet supplied an answer.<br /> <include src="forms/question.Ixp" /> </else> </lxp>