所以我有这个 hl7 类型的消息,我必须使用正则表达式或 xslt 或两者的组合进行转换。
此消息的格式是DateTime(as in YYYYMMDDHHMMSS)^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 和 regex 比较陌生,所以我不知道如何在这些情况下使用递归。
因此,如果我有这样一条包含多个位置的消息:
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>
那么我将如何解决这个问题?提前致谢。