Хотя Transform позволяет изменять внешний вид элементов или групп элементов, могут возникнуть ситуации, когда потребуется переключаться между несколькими вариантами поведения в зависимости от какого-либо условия. Это аналогично оператору switch или оператору if…else в других языках программирования.
Например, вы можете захотеть отображать разный фон для раннего утра, утра, обеда, дня, вечера и ночи.
Condition операторы в формате циферблата позволяют включать различные части сцены циферблата в зависимости от оценки выражений, например:
<Condition> <Expressions> <Expression name="is_early_morning"> <![CDATA[[HOUR_0_23] >= 6 && [HOUR_0_23] < 8]] </Expression> <Expression name="is_morning"> <![CDATA[[HOUR_0_23] < 12]] </Expression> <!-- Further expressions --> </Expressions> <Compare expression="is_early_morning"> <!-- Early morning content here --> </Compare> <Compare expression="is_morning"> <!-- Morning content here --> </Compare> <!-- Further Compare elements --> <!-- The "else" case --> <Default> <!-- content --> </Default> </Condition>
Несколько важных замечаний относительно условий:
- Используется первый элемент
Compare, для которогоexpressiontrue, остальные игнорируются. - В силу формата XML зачастую проще всего обернуть определение выражения в элемент
CDATA, как показано здесь, поскольку это позволяет избежать необходимости экранирования XML с помощью элементов сущностей, таких как>и&. - Структуры
Conditionмогут быть вложенными.