XSLT Date

Sep 28, 2010 20:32


В XSLT нет встроенного типа данных для дат. Есть формат строки с датой, но никак не отдельно календарь. Конечно, есть полезные надстройки, но некоторые вещи лучше еще и пощупать.

Обычно в большинстве императивных и декларативных языков уровня хотя бы повыше средней степени абстракции задача сравнения дат тривиальна, как сравнение чисел: Date1 > Date2.

В XSLT такого нет. И простейший и самый надежный способ следующий: берем строгую строку с датой, обрезаем, удаляем лишние символы, и конвертируем в число. Причем тут мы вольны выбирать, как обрезать число: оставить день или только год и месяц? Или может оставим первое из двух чисел дня? Как подсказал один пост трехлетней давности, рецепт таков:

number(translate(substring(@DueDate,1,10),'-','')) < number(translate(substring(ddwrt:TodayIso(),1,10),'-',''))

Короче, на лицо единственная проблема этого синтаксиса: избыточность. Хотя после гхм, быстрого такого создания еще одного сайта с кучей мелочей, мне уже как-то все равно, js ли, перл ли, си шарп ли, лишь бы интересно было.

Notas del Terrible

software, development

Previous post Next post
Up