Вы не объяснили, что вы подразумеваете под "не имеет значения". Вот общее решение :
not($v) and not(string($v))
Это выражение оценивается как true()
если $v
"не имеет значения".
Оба условия должны быть выполнены , потому что строка $v
, определенная как '0'
, имеет значение, но not($v)
равно true()
.
В XSLT 1.0 использование значения по умолчанию может быть достигнуто различными способами, если «значение» является набором узлов или если значение является скалярным (например, строка, число или логическое значение).
@ Алехандро предоставил один способ получить значение по умолчанию, если переменная, которая должна содержать набор узлов, пуста.
Если переменная должна содержать скаляр, то следующее выражение возвращает свое значение (если оно имеет значение) или (иным образом) желаемое значение по умолчанию:
concat($v, substring($default, 1 div (not($v) and not(string($v)))))