поэтому у меня есть это сообщение типа hl7, которое я должен преобразовать, используя либо регулярное выражение, либо xslt, либо их комбинацию.
Формат этого сообщения: ДатаВремя(как ГГГГММДДЧЧММСС)^UnitName^room^bed|). Каждая локация отделена трубой, поэтому у каждого человека может быть одна или несколько локаций. И сообщения выглядят так (когда у пациента только одно местоположение):
20130602201605^Some Hospital^ABFG^411|
Конечный результат xml должен выглядеть так:
<Location>
<item>
<when>20130602201605</when>
<UnitName>Some Hospital</UnitName>
<room>ABFG</room>
<bed>411</bed>
</item>
</Location>
Я бы, вероятно, использовал функцию типа подстроки, если бы это было только одно местоположение. Проблема, с которой я сталкиваюсь, заключается в том, что их больше одного. Я относительно новичок в xslt и регулярных выражениях в целом, поэтому я не знаю, как использовать рекурсию в этих случаях.
Итак, если у меня есть такое сообщение с несколькими местоположениями:
20130601003203^GBMC^XXYZ^110|20130602130600^Sanai^ABC^|20130602150003^John Hopkins^J615^A|
Конечный результат должен быть:
<Location>
<item>
<when>0130601003203</when>
<UnitName>GBMC</UnitName>
<room>XXYZ</room>
<bed>110</bed>
</item>
<item>
<when>20130602130600</when>
<UnitName>Sanai</UnitName>
<room>ABC</room>
<bed></bed>
</item>
<item>
<when>20130602150003</when>
<UnitName>John Hopkins</UnitName>
<room>J615</room>
<bed>A</bed>
</item>
</Location>
Итак, как бы я решил это? Заранее спасибо.