<xsl:if>
проверяет выражение (например, if
в традиционных языках). Результат выражения оценивается как логическое значение.
В вашем случае выражение является селектором XPath (/employee/first-name[@id]
) - оно всегда будет возвращать набор узлов. Наборы узлов оцениваются как false
только тогда, когда они пусты (например, не найдено подходящих узлов).
Выражение также может быть что-то вроде number(/employee/id)
. Теперь результатом выражения является число, которое оценивается как false
, если оно равно нулю, или NaN
, true
во всех других случаях.
Другими значениями false
являются пустая строка ''
(true
во всех других случаях) и результат самого false()
. Обратите внимание, что также есть функция true()
для возврата логического значения true
.
Также обратите внимание, что строка 'false'
оценивается как true
, согласно описанному правилу для строк.