提取值的条件格式

Conditional formatting on extracted value

我正在读取一个相对简单的 XML 数据文件,需要根据要显示的值更改字体颜色(在 HTML 输出中)。

这是 XML 文件的示例:

<report>
    <site site_code="123">
        <site_name>Here</site_name>
        <performance>56</performance>
    </site>
    <site site_code="234">
        <site_name>There</site_name>
        <performance>76</performance>
    </site>
    <site site_code="456">
        <site_name>Everywhere</site_name>
        <performance>96</performance>
    </site>
</report>

执行条件如下:

我正在纠结在哪里包含我的 <xsl:when test=""> 条件。这是我目前拥有的 XSL 片段:


<xsl:template match="site">
    <xsl:variable name="Performance" select="number(performance)"/>
    ...
    <tr>
        <td style="text-align: center">Performance</td>
    </tr>
    <tr>
        <xsl:choose>
            <xsl:when test="$performance $ge; 95">
                <td style="text-align: center" class="table_data_green"> <xsl:value-of select="performance"/>%</td>
            </xsl:when>
            <xsl:when test="$performance $ge; 60">
                <td style="text-align: center" class="table_data_orange"> <xsl:value-of select="performance"/>%</td>
            </xsl:when>
            <xsl:otherwise>
                <td style="text-align: center" class="table_data_red"> <xsl:value-of select="performance"/>%</td>
            </xsl:otherwise>
        </xsl:choose>
    </tr>

输出应类似于以下内容(来自上面的 XML):

<?xml version="1.0" encoding="UTF-8"?>
<html>
   <head>
        <link rel="stylesheet" href="styles.css" type="text/css"/>
        <title>Noddy Report</title>
   </head>
   <body>
      <div id="notifications-area"/>
      <main>
         <section class="container-fluid no-gutter reports">
            <div class="container" id="extracted_report_data">
               <div class="row">
                  <div class="col-xs-12">
                     <table border="0" width="100%">
                        <tr>
                           <td valign="center" align="center" width="100%">
                              <span class="report_heading">Noddy Report</span>
                           </td>
                        </tr>
                     </table>

                     <table width="100%" class="report_section_heading">
                        <tr>
                           <td class="grouping_location_text">
                                Site: <b>Here</b>
                           </td>
                        </tr>
                     </table>
                     <table border="0" width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="2">
                        <tr>
                           <th class="column_head_above">Performance</th>
                        </tr>
                        <tr>
                           <td style="text-align: center" class="table_data_red">56%</td>
                        </tr>
                     </table>
                     <br/>
                     <table width="100%" class="report_section_heading">
                        <tr>
                           <td class="grouping_location_text">
                                Site: <b>There</b>
                           </td>
                        </tr>
                     </table>
                     <table border="0" width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="2">
                        <tr>
                           <th class="column_head_above">Performance</th>
                        </tr>
                        <tr>
                           <td style="text-align: center" class="table_data_orange">76%</td>
                        </tr>
                     </table>
                     <br/>
                     <table width="100%" class="report_section_heading">
                        <tr>
                           <td class="grouping_location_text">
                                Site: <b>Everywhere</b>
                           </td>
                        </tr>
                     </table>
                     <table border="0" width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="2">
                        <tr>
                           <th class="column_head_above">Performance</th>
                        </tr>
                        <tr>
                           <td style="text-align: center" class="table_data_green">96%</td>
                        </tr>
                     </table>
                     <br/>
                  </div>
               </div>
            </div>
         </section>
      </main>
   </body>
</html>

在此先感谢您的帮助。

我终于自己弄明白了。如果有人遇到同样的问题,这是我发现的有效方法:

<xsl:template match="site">
    ...
    <tr>
        <td style="text-align: center">Performance</td>
    </tr>
    <tr>
        <xsl:choose>
            <xsl:when test="performance = 0">
                <td style="text-align: center" class="table_data_black"> <xsl:value-of select="format-number(performance, '#')"/>%</td>
            </xsl:when>
            <xsl:when test="performance &gt;= 95">
                <td style="text-align: center" class="table_data_green"> <xsl:value-of select="format-number(performance, '#.#')"/>%</td>
            </xsl:when>
            <xsl:when test="performance &gt;= 60">
                <td style="text-align: center" class="table_data_orange"> <xsl:value-of select="format-number(performance, '#.#')"/>%</td>
            </xsl:when>
            <xsl:otherwise>
                <td style="text-align: center" class="table_data_red"> <xsl:value-of select="format-number(performance, '#.#')"/>%</td>
            </xsl:otherwise>
        </xsl:choose>
    </tr>