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

User

  • Followers 1
  • Following 1

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

XSLT *
В жизни так случается, что не смотря на всю любовь к дифференциации данных и представления наступает день, когда возникает необходимость перенести часть логики в 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
Views 7.9K
Comments 7

Information

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