XSLT 用 int 替换字符串

XSLT replace string with an int

我正在从事一个项目,其中接收到的 HL7 消息由 XSLT 验证。我遇到的问题是 'Gender' (PID.8) 的 HL7 消息字段以字符串形式出现,但数据库将性别字段作为 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>

您似乎在 <xsl:value-of select="$value" /> 中留下了第二行,这是您示例中传递 "M1" 的 "M" 部分的内容。如果您注释掉该行或将其删除,您的代码应该会生成您正在寻找的结果。

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