我有8个主要类别。每个类别都有自己的0-100分数。 我需要根据该分数的百分比范围显示5种不同的文本。
例如: 第1类 - 得分为46% 当分数在这些范围之间时显示这些文本: 正文1:0-40% 正文2:41-60% 正文3:61-80% 正文4:81-90% 文字5:91-100%
在这种情况下,我需要显示“Text 2”,因为46%属于该范围。
我怎么能这样做?
我曾尝试为此编写代码,但我不确定如何在模板部分中指定百分比范围。
XSL-FO文件:
<xsl:call-template name="information">
<xsl:with-param name="score" select="//attribute-lines[*/id = 'Path-Brick-Attribute']/*/value-text"/>
</xsl:call-template>
XSL文档中的模板部分:
`<xsl:template name="information">
<xsl:param name="score"/>
<xsl:choose>
<xsl:when test="$score >= 0 and 40 >=">
<fo:block>
<xsl:text>
Text 1
</xsl:text>
</fo:block>
</xsl:when>
<xsl:when test="$score >= 41 and >= 60">
<fo:block>
<xsl:text>
Text 2
</xsl:text>
</fo:block>
</xsl:when>
</xsl:choose>
</xsl:template>`
答案 0 :(得分:2)
您需要使用的模式是:
<xsl:template name="score-to-label">
<xsl:param name="score"/>
<fo:block>
<xsl:choose>
<xsl:when test="$score > 90">Text 5</xsl:when>
<xsl:when test="$score > 80">Text 4</xsl:when>
<xsl:when test="$score > 60">Text 3</xsl:when>
<xsl:when test="$score > 40">Text 2</xsl:when>
<xsl:otherwise>Text 1</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:template>
这是有效的,因为xsl:choose
在第一次返回true的测试时退出。
请注意,这需要将$score
作为号(0..100),而不是百分比。