and(,`boolean1`

+)`boolean2`

Returns the logical AND of its arguments (after converting them to booleans, if needed to).

A number is TRUE if and only if it is neither positive or negative zero nor NaN.

A string is TRUE if and only if its length is non-zero.

A date/time is always TRUE.

An XML nodeset is TRUE if and only if it is non-empty.

or(,`boolean1`

+)`boolean2`

Returns the logical OR of its arguments (after converting them to booleans, if needed to).

Conversion of values to booleans is described here.

not()`boolean`

Returns TRUE if its argument is FALSE, and FALSE otherwise.

Conversion of values to booleans is described here.

if(,`test1`

,`value1`

*,`alternative`

)`fallback`

*Alternative* is: *testi* *valuei*.

Evaluates each *testi* in turn as a boolean, if the result of *testi* is TRUE, returns corresponding *valuei*. Otherwise, if all *testi* evaluates to FALSE, returns *fallback*.

Conversion of values to booleans is described here.