通过 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="' '"/>
</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="' '"/>
</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="' '"/>
</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>
<?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="' '"/>
</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="' '"/>
</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="' '"/>
</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>