我正在处理一个项目,其中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>
答案 0 :(得分:2)
您似乎已经离开了<xsl:value-of select="$value" />
作为第二行,这就是通过&#34; M&#34; &#34; M1&#34;的一部分在你的例子中。如果您注释掉该行或删除它,您的代码应生成您正在寻找的结果。
我对HL7了解不多,但我很想检查您收到的消息的规格是否适合使用<xsl:otherwise>
条件添加到<xsl:choose>
的结尾。