XML中的if-else语句

时间:2018-05-02 16:16:30

标签: xml xslt

我有这样一个个人识别号码: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>

1 个答案:

答案 0 :(得分:2)

使用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'" />