【问题标题】:Conditional formatting on extracted value提取值的条件格式
【发布时间】:2020-12-22 13:45:10
【问题描述】:

我正在读取一个相对简单的 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>

这些是表现的条件:

  • (x
  • (60%
  • (x >= 95%) ;颜色 = 绿色

我正在努力在哪里包含我的&lt;xsl:when test=""&gt; 条件。这是我目前拥有的 XSL sn-p:


<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>

提前感谢您的帮助。

【问题讨论】:

  • 请将预期结果显示为 HTML 代码

标签: html xml xslt-1.0


【解决方案1】:

我终于自己弄清楚了。如果有人遇到同样的问题,这就是我发现的工作:

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2011-08-08
    • 2018-11-20
    • 1970-01-01
    • 2014-05-28
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多