Pull to refresh
6
0
Савва Михалевский @smikhalevski

User

Send message

Timestamp из даты-времени с помощью XSLT

Reading time13 min
Views9.6K
В жизни так случается, что не смотря на всю любовь к дифференциации данных и представления наступает день, когда возникает необходимость перенести часть логики в XSLT шаблон.

В моем случае ничего криминального на горизонте не предвиделось: требовалось провести расчет времени между двумя событиями в иерархическом XML логе. Дата и время хранились в формате частично совместимом с RFC 3339.

Эта совместимость обеспечивалась корректной нотацией даты yyyy-MM-dd и времени hh:mm:ss.SS, но имели место следующие отступления от стандарта:
  1. Дата и время разделялись пробелом, а не буквой T;
  2. Число цифр, обозначающих миллисекунды могло варьироваться от «ниодной» до «много-много»;
  3. Часовой пояс не указывался вообще.
Сначала я хотел воспользоваться готовым решением с exslt.org – date:difference, но от него пришлось отказаться. Дело в том, что разницу требовалось получать с точностью до миллисекунд, а этот алгоритм возвращал валидный xsd:duration (ISO 8601), который миллисекунд не содержит. К тому же парсить чужой output, хоть и формализованный – дело не очень благодарное. Таким образом, покопавшись немного в exslt, я решил написать парсер сам, в надежде, что смогу сделать это быстро…
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments7

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity