when test="position() mod 4 = 0" : choose « XSLT stylesheet « XML Tutorial






File: Data.xml

<?xml version="1.0"?>
<!-- albums.xml -->
<list xml:lang="en">
  <title>title 1</title>
  <listitem>item 1</listitem>
  <listitem>item 2</listitem>
  <listitem>item 3</listitem>
  <listitem xml:lang="sw">item 4</listitem>
  <listitem xml:lang="en-gb">item 5</listitem>
  <listitem xml:lang="zu">item 6</listitem>
  <listitem xml:lang="jz">item 7</listitem>
</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/listitem">
            <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;">item 1</td>
         </tr>
         <tr>
            <td style="background: white; color: black;">item 2</td>
         </tr>
         <tr>
            <td style="background: black;">item 3</td>
         </tr>
         <tr>
            <td style="background: yellow; color: black;">item 4</td>
         </tr>
         <tr>
            <td style="background: blue;">item 5</td>
         </tr>
         <tr>
            <td style="background: white; color: black;">item 6</td>
         </tr>
         <tr>
            <td style="background: black;">item 7</td>
         </tr>
      </table>
   </body>
</html>








5.43.choose
5.43.1.choose statement
5.43.2.xsl:choose, xsl:when and xsl:otherwise
5.43.3.xsl:choose: check the value of an attribute
5.43.4.choose with otherwise statement
5.43.5.when test="position() mod 4 = 0"
5.43.6.Change style for even and odd
5.43.7.xsl:choose element is used for selection between several possibilities