XSL-FO根据值的百分比显示文本

时间:2017-09-05 10:18:55

标签: xslt xsl-fo value-of

我有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 &gt;= 41 and &gt;= 60">
            <fo:block>
                <xsl:text>
                    Text 2
                </xsl:text>
            </fo:block>
        </xsl:when>
    </xsl:choose>
</xsl:template>`

1 个答案:

答案 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),而不是百分比