在xslt中不执行多个条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在xslt中不执行多个条件相关的知识,希望对你有一定的参考价值。
我希望标记符合要求的等级标准。我试过xsl:choose
检查标记条件,但它没有检查它总是执行的条件,否则条件。有人可以分享解决方案吗?
XML:
{
<marklist>
<student>
<reg_no>100</reg_no>
<name>aaa</name>
<marks>
<CD>55</CD>
<AI>44</AI>
</marks>
</student>
<student>
<reg_no>101</reg_no>
<name>bbb</name>
<marks>
<CD>65</CD>
<AI>46</AI>
</marks>
</student>
</marklist>
}
必需的XML格式:
{
<marklist>
<student>
<reg_no>100</reg_no>
<name>aaa</name>
<grade>
<CD>D</CD>
<AI>E</AI>
</grade>
</student>
<student>
<reg_no>101</reg_no>
<name>bbb</name>
<grade>
<CD>C</CD>
<AI>E</AI>
</grade>
</student>
</marklist>
}
答案
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="CD">
<CD>
<xsl:choose>
<xsl:when test=". < 60 and . > 50">
<xsl:value-of select="'D'"/>
</xsl:when>
<xsl:when test=". < 70 and . > 60">
<xsl:value-of select="'C'"/>
</xsl:when>
</xsl:choose>
</CD>
</xsl:template>
<xsl:template match="AI">
<AI>
<xsl:choose>
<xsl:when test=". < 60 and . > 50">
<xsl:value-of select="'D'"/>
</xsl:when>
<xsl:when test=". < 70 and . > 60">
<xsl:value-of select="'C'"/>
</xsl:when>
<xsl:when test=". < 50 and . > 30">
<xsl:value-of select="'E'"/>
</xsl:when>
</xsl:choose>
</AI>
</xsl:template>
You may check value of CD and AI and apply Grade according to that
以上是关于在xslt中不执行多个条件的主要内容,如果未能解决你的问题,请参考以下文章