Разбор строк даты - PullRequest
       13

Разбор строк даты

0 голосов
/ 27 ноября 2009

Я пишу XSLT для преобразования XML-документа из одного DTD в другое, и в процессе этого пытаюсь привести в порядок некоторые строки дат.

Каждая запись в моем исходном документе имеет элемент даты, который содержит строковое представление даты. Несколько иллюстративных примеров:

  • 11 апреля 1995
  • 14 апреля 1995
  • 10 сентября 2002
  • 14 сентября 2004
  • 21-23 июня 2002 года
  • 2005

Я хочу, чтобы мой итоговый документ содержал даты (или диапазоны дат, где это уместно) в формате ISO 8601.

Какая моя лучшая стратегия для достижения этой цели? Я мог бы разобраться и начать писать функцию для их преобразования (возможно, на основе регулярных выражений), но мне трудно поверить, что кто-то еще не решил эту проблему.

Есть ли модуль / функция XSLT, которые сделают большую часть работы за меня? Стоит ли искать решение вне XSLT?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2009

Вам нужно будет выполнить некоторое лексическое преобразование и, вероятно, написать большую часть этого самостоятельно. XSLT не является хорошим языком для того, чтобы делать то, что вам нужно - я бы выбрал DOM с процедурным кодом и библиотеками Date. В моем случае я бы использовал Java и XOM (http://xml.xom.nu), но вы можете сделать то же самое в Python или C # или ...

Я бы преобразовал данные в XML, а затем выполнил XSLT-преобразование в два этапа

0 голосов
/ 27 ноября 2009

Мне не трудно в это поверить, поскольку, когда у вас есть даты в нестандартном формате, вы можете иметь буквально все, и, следовательно, невозможно разработать универсальное решение. Например, как бы вы конвертировали 21-23 June 2002 в одну дату?

Я думаю, что использование регулярных выражений - действительно лучший вариант. Возможно, вам удастся найти готовое регулярное выражение для обработки нестандартных форматов дат, но, скорее всего, вам придется настроить его под свои нужды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...