xml - 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>
解决方案
用于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'" />
推荐阅读
- c++ - 通过 QML 仿函数对 C++ 模型进行排序和过滤?
- c# - 使用 eBUS SDK 和 EmguCV 在 C# 中从 PvBuffer 创建一个 Mat
- c - C API 应该返回值还是错误代码?
- openshift - minishift ansible代理配置问题
- obiee - OBIEE 12c:可点击的饼图
- c++ - 为什么 Gplmpgdec(GPL MPEG-1/2 DirectShow 解码器过滤器)会覆盖/绕行 IsDebuggerPresent?
- javascript - 节点 dotenv 不适用于 pm2
- powerbi - 从 PowerBI 中的累积列获取增量值
- powerpoint - 带有百分比编码的 mailto 超链接不会保存在 powerpoint 中
- javascript - 通过 AJAX 传递几个 PHP 动态变量