Извлечение и форматирование дат из xml с использованием xslt - PullRequest
0 голосов
/ 25 февраля 2010

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

Это кусок XML:

<Information>
[OB]LGW|Sun 23, May 2010|11:15|MCO|Sun 23, May 2010|15:25[/OB]
</Information>

Мне нужно, чтобы он выглядел так:

<Flight 
  ArrivalDateTime="2010-05-16T15:35:00"
  DepartureDateTime="2010-05-16T11:30:00"
  DirectionInd="Outbound"
  RPH="1" 
  TravelCode="24"
  Type="Charter"
>

Ответы [ 3 ]

0 голосов
/ 01 марта 2010

Функция XPath tokenize () может быть вам полезна, а также substring-after и substring-before.

0 голосов
/ 02 марта 2010

Всякий раз, когда я вижу такой XML-документ, мой первый импульс - заставить человека, который его создал, выполнять свою работу. Серьезно, это 2010 год. Давно уже пора ожидать, что если вам потребуется создавать XML, это означает, что вы создаете пригодный для использования XML, а не данные в своем личном формате seekrit, в которые были обернуты теги. Излучать подобные вещи лениво и презрительно.

Конечно, не всегда возможно заставить людей вести себя как ответственные профессионалы. Мой второй подход заключается в предварительной обработке XML и восстановлении его до того, как он попадет в XSLT или в любой другой код, который ожидает рационально сконструированный XML. Это избавляет меня от необходимости выяснять, как заставить XSLT делать то, что никогда не было разработано. Это также означает, что любой не-XSLT-код, который обрабатывает эти данные в нисходящем направлении, может быть проще.

0 голосов
/ 26 февраля 2010

Так как даты разные, я предполагаю, что примеры сырых и готовых форматов на самом деле не являются «одними и теми же» данными. Кроме того, ваш вопрос касается только дат: вы ожидаете также проанализировать коды аэропортов отправления и назначения?

В любом случае, поскольку данные представлены в формате, отличном от XML, вы не получите анализатор XML для его анализа. То есть синтаксический анализатор XML распознает данные как дочерний узел Text узла Information Element, но ни один инструмент XML не может знать, как разделить текст на части. Для этого вам нужно написать собственный парсер.

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