我想根据浮点值设置表格的颜色..
....
<xsl:variable name="percent">
<xsl:value-of select="float(PercentageValue)" />
</xsl:variable>
<xsl:variable name="color">
<xsl:choose>
<xsl:when test="$PercentageValue ≥ 75.0">green</xsl:when>
<xsl:when test="$PercentageValue < 75.0 and $PercentageValue ≥ 50.0">orange</xsl:when>
<xsl:otherwise>red</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr bgcolor="$color">
....
我想要的是......
if(percent>=75)
tableRowColor=green;
else if(percent>=50.0 && percent <75.0)
tableRowColor=orange;
else
tableRowColor=red;
我相对较新的XSLT语法..上面的问题是什么? 帮助赞赏!
编辑1:对于变量为$ PercentageValue的复制粘贴,请输入拼写错误 这就是我现在所做的..
....
<xsl:variable name="PercentageValue">
<xsl:value-of select="number(percent)" />
</xsl:variable>
<xsl:variable name="color">
<xsl:choose>
<xsl:when test="$PercentageValue >= 75.0">green</xsl:when>
<xsl:when test="$PercentageValue < 75.0 and $PercentageValue >= 50.0">orange</xsl:when>
<xsl:otherwise>red</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr bgcolor="$color">
.....
现在我确实得到了颜色,但都是黑色..为什么呢?
以下是我如何展示 百分比值在最后..在td中为该tr选择,因此它会显示.. 实际上整个xml和xsl是通过java动态生成的,因此那里有很多精度(double)。那会导致问题吗?
答案 0 :(得分:4)
有几个问题:
percent
,但您引用了$PercentageValue
number()
函数gt;=
和lt;
进行比较试试这个:
<xsl:template match="/xml">
<xsl:variable name="PercentageValue">
<xsl:value-of select="number(PercentageValue)" />
</xsl:variable>
<xsl:variable name="color">
<xsl:choose>
<xsl:when test="$PercentageValue >= 75.0">green</xsl:when>
<xsl:when test="$PercentageValue < 75.0 and $PercentageValue >= 50.0">orange</xsl:when>
<xsl:otherwise>red</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<TheColorIs>
<xsl:value-of select="$color"/>
</TheColorIs>
</xsl:template>
关于这个Xml:
<xml>
<PercentageValue>77</PercentageValue>
</xml>
顺便说一句,请记住您还可以使用模板过滤来应用匹配,而不是使用xsl:if
或xsl:choose / xsl:when
创建大量变量和命令式“切换”,
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/xml/PercentageValue[number() >= 75]">
<color>green</color>
</xsl:template>
<xsl:template match="/xml/PercentageValue[number() < 75.0 and number() >= 50.0]">
<color>orange</color>
</xsl:template>
</xsl:stylesheet>