2016-02-25 1 views
0

Выберите цвет текста для, выводимого HTML оказанного табличных данных через XML с помощью XSL в качестве ссылки

<?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, я просто хочу, чтобы убедиться, что всякий раз, когда значение для столбца состояния для моего выхода табличного data Выполняет его отображение в зеленом цвете, если его Остановка становится отображаемой красной. Как добавить эту часть к этому выше xsl. Я попробовал несколько способов сделать это, но никто не работал. Кажется, xsl имеет свой собственный способ отображения выходного текста, относящегося к цвету. Любая помощь в этом отношении была бы весьма признательна.

Пример XML

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

Спасибо, Эшли

+0

Можете ли вы изменить свой вопрос, чтобы показать образец своего XML, пожалуйста? Кроме того, можете ли вы использовать один из способов, которым вы пытались? Обратите внимание, что XSL не имеет понятия о цвете. Все, что он делает, выводит HTML (и CSS) и обрабатывает цвет. Итак, в идеале вы хотели бы знать, как будет выглядеть HTML + CSS, прежде чем вы сделаете XSLT. Благодаря! –

+0

часть xml: - – Ashley

+0

. Вы должны отредактировать свой вопрос, чтобы показать свой XML (есть небольшая ссылка «редактировать» только под списком тегов), поскольку XML в комментариях трудно читать. Благодаря! –

ответ

0

Вам нужно добавить класс к каждому из ваших строк стилизовать, а затем добавить соответствующие правила в таблице стилей.

Если вы хотите, чтобы установить цвет всей строки, изменить первую строку

<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}">. Это добавит статус как атрибут класса в выведенные строки таблицы.

Теперь вы можете изменить таблицы стилей 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> 
+0

Спасибо за ответ быстрого ответа, но затем я получаю тот же вывод, что цвет не меняется .. RUNNING отображается в том же черном черном цвете по умолчанию. – Ashley

+0

@ Ашли исправил это.Строки, которые нужно изменить, не правильно выбирали статус. – Matthew

+0

Отлично, вы снова качались. Отлично работает.:) – Ashley