通过 xml 以 xsl 作为参考,为输出的 html 呈现的表格数据选择文本颜色

Choose text color for outputted html rendered tabular data through xml with xsl as reference

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
<head>
   <style type="text/css">
    table {table-layout: fixed; width: 100%;}
    td {width: 20%; word-wrap: break-word;}
   </style>
</head>
<body>
<h2>RTCP STUB STATUS</h2>
<table border="1">
<tr bgcolor="#9acd32" >
<th>Stub Component</th>
<th>Stub Name</th>
<th>Stub Operation</th>
<th>Stub Version</th>
<th>Stub Status</th>
</tr>
<xsl:for-each select="//stub">
<tr>
<td><xsl:value-of select="@component" /></td>
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="@operation" /></td>
<td><xsl:value-of select="@version" /></td>
<td><xsl:for-each select="instances/instance">
<xsl:value-of select="@status"/>
<xsl:value-of select="'&#160;'"/>
</xsl:for-each>
</td> 
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

基于我上面的 xsl,我只是想确保每当我的输出表格数据的状态列的值为 运行 时,它以绿色显示,如果它停止它显示为红色。我如何将该部分添加到上面的 xsl 中。我尝试了几种方法来做到这一点,但 none 奏效了。似乎 xsl 有自己的方式来显示与颜色有关的输出文本。 在这方面的任何帮助将不胜感激。

样本XML

<stubs> 
    <stub component="ChannelInquiry_Binding_HTTP_v2" name="getAllChannelAvailabilityStub" operation="getAllChannelAvailability" version="26.7"> 
        <instances>
            <instance status="STOPPING"/> 
        </instances> 
    </stub>
<stubs>

谢谢, 阿什莉

您需要向要设置样式的每一行添加 class,然后向样式表添加适当的规则。

如果你想设置整行的颜色,改变第一行

<tr>
    <td><xsl:value-of select="@component" /></td>
    <td><xsl:value-of select="@name" /></td>
    <td><xsl:value-of select="@operation" /></td>
    <td><xsl:value-of select="@version" /></td>
    <td>
        <xsl:for-each select="instances/instance">
            <xsl:value-of select="@status"/>
            <xsl:value-of select="'&#160;'"/>
        </xsl:for-each>
    </td>
</tr>

<tr class="{./instances/instance/@status}">。这会将状态作为 class 属性添加到输出的 table 行。

现在您可以将 css 样式表修改为

<style type="text/css">
    table {table-layout: fixed; width: 100%;}
    td {width: 20%; word-wrap: break-word;}
    tr.Running {color: green;}
    tr.Stopping {color: red;}
</style>

如果您不想为整行着色,而只想为状态列着色,而不是上面的颜色,您需要更改

的第一行
<td>
    <xsl:for-each select="instances/instance">
        <xsl:value-of select="@status"/>
        <xsl:value-of select="'&#160;'"/>
    </xsl:for-each>
</td>

<td class="{./instances/instance/@status}"> 并将 css 样式表修改为

<style type="text/css">
    table {table-layout: fixed; width: 100%;}
    td {width: 20%; word-wrap: break-word;}
    td.Running {color: green;}
    td.Stopping {color: red;}
</style>