首页 > 解决方案 > XML 中的 if-else 语句

问题描述

我有这样一个个人身份证号码:53012393715。第10个数字代表性别。我想用 if-else 语句来做这样的操作。起初我应该从 id 中得到第 10 个数字,在我的例子中是 1(一)。如果数字是偶数(0,2,4,6,8),则表示女性,否则(1,3,5,7,9)表示男性。我需要在我的输出 XML 文件中获取性别。

我尝试使用 concat 函数获取第 10 个数字,但它不起作用,我也不知道如何正确使用 if-else 语句。

我的输入 XML 文件:

<ClientList>
  <Client>
    <IdNumber>53012393715</IdNumber>
  </Client>
</ClientList>

我想要得到的这个输出 XML 文件:

<ClientList>
  <Client>
    <Gender>man</Gender>
  </Client>
</ClientList>

标签: xmlxslt

解决方案


用于substring获取第 10 项

 <xsl:variable name="gender" select="substring(IdNumber, 10, 1)" />

在 XSLT 中,xsl:if只有一条语句,没有别的。如果你想做“if/else”,你可以使用xsl:choose

<xsl:choose>
   <xsl:when test="number($gender) mod 2 = 0">Male<xsl:when>
   <xsl:otherwise>Female<xsl:otherwise>
<xsl:choose>

把它放在一起给出了这个......

<xsl:template match="Client">
  <Client>
    <xsl:variable name="gender" select="substring(IdNumber, 10, 1)" />
    <xsl:choose>
       <xsl:when test="number($gender) mod 2 = 1">Male</xsl:when>
       <xsl:otherwise>Female</xsl:otherwise>
    </xsl:choose>
  </Client>
</xsl:template>

但是,如果您可以使用 XSLT 2.0,您将能够做到这一点……

<xsl:value-of select="if (number($gender) mod 2 = 1) then 'male' else 'female'" />

推荐阅读