ThomasM: xsl - hintergrundfarbe von wert abhängig

Beitrag lesen

Hallo derrenner,

Ich habe einen Wert im XML dem ich die hintergrundfarbe in der tabellen-zelle abhängig von dem wert anzeigen will. von 1-3 soll es grün sein, von 4-6 gelb, und von 7-9 rot.

test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <wert>1</wert>
  <wert>2</wert>
  <wert>3</wert>
  <wert>4</wert>
  <wert>5</wert>
  <wert>6</wert>
  <wert>7</wert>
  <wert>8</wert>
  <wert>9</wert>
</test>

test.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="5" encoding="UTF-8" indent="yes"/>

  <xsl:template match="test">
    <html>
      <head>
        <meta charset="UTF-8"/>
        <title>Test</title>
        <style>
          .klasse_1 { color: black; background-color: green; }
          .klasse_2 { color: black; background-color: yellow; }
          .klasse_3 { color: black; background-color: red; }
          .klasse_x { color: black; background-color: white; }
          td { text-align: center; }
        </style>
      </head>
      <body>
        <table>
          <thead>
            <tr>
              <th>Wert</th>
            </tr>
          </thead>
          <tbody>
            <xsl:apply-templates select="wert"/>
          </tbody>
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="wert">
    <tr>
      <td>
        <xsl:attribute name="class">
          <xsl:choose>
            <xsl:when test=". >= 1 and . &lt;= 3">klasse_1</xsl:when>
            <xsl:when test=". >= 4 and . &lt;= 6">klasse_2</xsl:when>
            <xsl:when test=". >= 7 and . &lt;= 9">klasse_3</xsl:when>
            <xsl:otherwise>klasse_x</xsl:otherwise>
          </xsl:choose>
        </xsl:attribute>
        <xsl:value-of select="."/>
      </td>
    </tr>
  </xsl:template>

</xsl:stylesheet>

Erzeugt in der HTML-Ausgabe u. a.:

<tr>
  <td class="klasse_1">1</td>
</tr>

Grüße, Thomas