Укажите значение по умолчанию в случае пустого набора узлов

Как с помощью XPath 2.0 указать значение по умолчанию в случае пустого набора узлов? Я хотел бы иметь возможность сделать что-то вроде $datatypes/type[@key="somevalue"] or "default value", чтобы значение по умолчанию возвращалось, если ключ не найден.


person Vadim Peretokin    schedule 24.07.2013    source источник


Ответы (1)


Возможно, это не то, что вы ищете, но я думаю, что вам нужно иметь Условные выражения.

Поэтому попробуйте что-то вроде этого:

if ($datatypes/type[@key="somevalue"])
 than $datatypes/type[@key="somevalue"]
 else "default value"
person hr_117    schedule 24.07.2013
comment
Я также узнал, что ($datatypes/type[@key="somevalue"], "default value")[1] — это еще один способ (и немного короче!). Спасибо за Ваш ответ :) - person Vadim Peretokin; 25.07.2013
comment
Это работает только для узлов с одним результатом. XPath сглаживает последовательности, а не вкладывает их друг в друга, поэтому в случае нескольких совпадающих элементов вы получите только первый. Для последовательностей произвольной длины придерживайтесь ответа @ hr_117. - person Jens Erat; 28.07.2013