我必须说我是这一切的绝对新手。 我正在写一个小的xslt演示文件,带有一个表,我想改变单元格或行的背景颜色(要么会改变,但我更愿意只改变单元格背景),具体取决于内容。 / p>
实施例: RATING =“GOOD”“MEDIUM”“BAD”;根据它的值,我希望背景为绿色,黄色或红色。
我目前的表格代码:
<table width="1000" border="0" cellspacing="0" cellpadding="0" class="table-fill">
<thead>
<tr>
<th scope="col">NAME</th>
<th scope="col">VALUE</th>
<th scope="col">RATING</th>
<th scope="col">DESCRIPTION</th>
</tr>
</thead>
<tbody>
<xsl:for-each select="test/criteria">
<tr>
<td><xsl:value-of select="@nom" /></td>
<td><xsl:value-of select="value" /></td>
<td><xsl:value-of select="rating" /></td>
<td><xsl:value-of select="descr" /></td>
</tr>
</xsl:for-each>
</tbody>
</table>
提前谢谢
- EDIT-- @Yaakov Ainspan回答了我的问题,并由@Ruud解决,他给了我一些我缺乏的代码。
它不是“Is there a CSS selector for elements containing certain text?”的副本,因为我不需要从包含多个元素的字符串中隔离元素,只是为了创建与单元格内容同名的类(这是一个单词)
答案 0 :(得分:1)
如果它只是这三个预定义值,您可以使用相同的名称向样式表添加类:
.GOOD {
background-color: green;
}
.MEDIUM {
background-color: yellow;
}
.BAD {
background-color: red;
}
...并将class属性添加到行:
<xsl:for-each select="test/criteria">
<tr>
<xsl:attribute name="class">
<xsl:value-of select="rating" />
</xsl:attribute>
<td><xsl:value-of select="@nom" /></td>
<td><xsl:value-of select="value" /></td>
<td><xsl:value-of select="rating" /></td>
<td><xsl:value-of select="descr" /></td>
</tr>
</xsl:for-each>
...或单元格:
<xsl:for-each select="test/criteria">
<tr>
<td><xsl:value-of select="@nom" /></td>
<td><xsl:value-of select="value" /></td>
<td>
<xsl:attribute name="class">
<xsl:value-of select="rating" />
</xsl:attribute>
<xsl:value-of select="rating" />
</td>
<td><xsl:value-of select="descr" /></td>
</tr>
</xsl:for-each>
编辑:为了更好的可读性,您还可以这样添加课程:
<xsl:for-each select="test/criteria">
<tr>
<td><xsl:value-of select="@nom" /></td>
<td><xsl:value-of select="value" /></td>
<td class="{rating}"><xsl:value-of select="rating" /></td>
<td><xsl:value-of select="descr" /></td>
</tr>
</xsl:for-each>