提取值的条件格式
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>
执行条件如下:
- (x < 60%);颜色 = 红色
- (60% <= x < 95%);颜色 = 橙色
- (x >= 95%) ;颜色 = 绿色
我正在纠结在哪里包含我的 <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 >= 95">
<td style="text-align: center" class="table_data_green"> <xsl:value-of select="format-number(performance, '#.#')"/>%</td>
</xsl:when>
<xsl:when test="performance >= 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>
我正在读取一个相对简单的 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%);颜色 = 红色
- (60% <= x < 95%);颜色 = 橙色
- (x >= 95%) ;颜色 = 绿色
我正在纠结在哪里包含我的 <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 >= 95">
<td style="text-align: center" class="table_data_green"> <xsl:value-of select="format-number(performance, '#.#')"/>%</td>
</xsl:when>
<xsl:when test="performance >= 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>