XSLT用int替换字符串

时间:2018-01-30 23:57:58

标签: xml xslt hl7

我正在处理一个项目,其中XSLT验证收到的HL7消息。我遇到的问题是'性别'的HL7消息字段。 (PID.8)以字符串形式出现,但数据库将性别字段作为int。

我试图这样做,以便在读取性别的HL7字段时,它会转换为int值。我正在寻找的结果,当PID.8字段显示' M'时,它将其转换为1.然而,我当前得到的结果是当PID.8字段时显示' M',它推动了M1'。

<xsl:variable name="value" select="//PID/PID.8" />
<xsl:value-of select="$value" />
<xsl:choose>
    <xsl:when test="contains($value, 'NA')">
        <xsl:value-of select="0" />
    </xsl:when>
    <xsl:when test="contains($value, 'M')">
        <xsl:value-of select="1" />
    </xsl:when>
    <xsl:when test="contains($value, 'F')">
        <xsl:value-of select="2" />
    </xsl:when>
    <xsl:when test="contains($value, 'UN')">
        <xsl:value-of select="3" />
    </xsl:when>
</xsl:choose>

1 个答案:

答案 0 :(得分:2)

您似乎已经离开了<xsl:value-of select="$value" />作为第二行,这就是通过&#34; M&#34; &#34; M1&#34;的一部分在你的例子中。如果您注释掉该行或删除它,您的代码应生成您正在寻找的结果。

我对HL7了解不多,但我很想检查您收到的消息的规格是否适合使用<xsl:otherwise>条件添加到<xsl:choose>的结尾。