Set table cell style with choose statement : table « XSLT stylesheet « XML Tutorial






File: Data.xml

<?xml version="1.0"?>
<list xml:lang="en">
  <title>title 1</title>
  <listelement>element 1</listelement>
  <listelement>element 2</listelement>
  <listelement>element 3</listelement>
  <listelement xml:lang="sw">element 4</listelement>
  <listelement xml:lang="en-gb">element 5</listelement>
  <listelement xml:lang="zu">element 6</listelement>
  <listelement xml:lang="jz">element 7</listelement>
</list>

File: Transform.xslt

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="html"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>
          <xsl:value-of select="list/title"/>
        </title>
      </head>
      <body style="font-family: sans-serif; color: white;">
        <h1 style="color: black;">
          <xsl:value-of select="list/title"/>
        </h1>
        <table border="1" cellpadding="5" 
          style="font-weight: bold;">
          <xsl:for-each select="list/listelement">
            <tr>
              <td>
                <xsl:attribute name="style">
                  <xsl:choose>
                    <xsl:when test="position() mod 4 = 0">
                      <xsl:text>background: yellow; color: black;</xsl:text>
                    </xsl:when>
                    <xsl:when test="position() mod 4 = 1">
                      <xsl:text>background: blue;</xsl:text>
                    </xsl:when>
                    <xsl:when test="position() mod 4 = 2">
                      <xsl:text>background: white; color: black;</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:text>background: black;</xsl:text>
                    </xsl:otherwise>
                  </xsl:choose>
                </xsl:attribute>
                <xsl:value-of select="."/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Output:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>title 1</title>
   </head>
   <body style="font-family: sans-serif; color: white;">
      <h1 style="color: black;">title 1</h1>
      <table border="1" cellpadding="5" style="font-weight: bold;">
         <tr>
            <td style="background: blue;">element 1</td>
         </tr>
         <tr>
            <td style="background: white; color: black;">element 2</td>
         </tr>
         <tr>
            <td style="background: black;">element 3</td>
         </tr>
         <tr>
            <td style="background: yellow; color: black;">element 4</td>
         </tr>
         <tr>
            <td style="background: blue;">element 5</td>
         </tr>
         <tr>
            <td style="background: white; color: black;">element 6</td>
         </tr>
         <tr>
            <td style="background: black;">element 7</td>
         </tr>
      </table>
   </body>
</html>








5.5.table
5.5.1.Use for-each loop to output table row
5.5.2.Table cell format
5.5.3.Format table cell with choose statement
5.5.4.Set table cell style with choose statement
5.5.5.generates a table with selected elements,with the number of elements per row given in the stylesheet