Подтвердить что ты не робот

Таблица HTML с чередующимися цветами строк через XSL

Каков самый простой способ чередовать цвета строк в таблице HTML (a.ka. striping). Большинство моих таблиц создаются в шаблонах XSL, таких как: таблица, thead и т.д., Определенные в другом шаблоне.

<xsl:template match="typ:info">
  <tr>
    <td>
      <xsl:value-of select="typ:dateAccessed" />
    </td>
    <td>
      <xsl:value-of select="typ:loginId" />
    </td>
  </tr>
</xsl:template>

Мое предпочтение заключается в использовании чередующихся классов для элементов.

4b9b3361

Ответ 1

Если вы должны создавать жестко закодированные цвета в HTML:

<xsl:template match="typ:info">
  <xsl:variable name="css-class">
    <xsl:choose>
      <xsl:when test="position() mod 2 = 0">even</xsl:when>
      <xsl:otherwise>odd</xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <tr class="{$css-class}">
    <td>
      <xsl:value-of select="typ:dateAccessed" />
    </td>
    <td>
      <xsl:value-of select="typ:loginId" />
    </td>
  </tr>
</xsl:template>

С сегодняшними браузерами вы намного лучше используете CSS и tr:nth-child(odd).

Это приводит к меньшему количеству хлопот на стороне XSLT, значительно более высокой разметке HTML и совместимости с сортировкой и фильтрацией на стороне клиента.

Ответ 2

Вы также можете использовать css3.

tr:nth-child(odd) { background: #ff0000; }

Поддерживается как IE9 в течение некоторого времени всеми другими браузерами.

Ответ 3

Используйте XSL: когда и сравнивайте позицию mod 2, чтобы получить нечетные или четные строки, чтобы изменить классы, когда это необходимо:

<xsl:choose>
    <xsl:when test="position() mod 2 = 1">
        <td class="odds">blah</td>
    </xsl:when>
    <xsl:otherwise>
        <td class="even">blah</td>
    </xsl:otherwise>
</xsl:choose>

РЕДАКТИРОВАТЬ: Получение моего нечетного/даже правильного пути вокруг вздоха

Ответ 4

Можно ли вместо этого изменить только имя класса, когда вы можете выбрать внутри переменной, чтобы изменить ее внутреннее значение. Что-то вроде этого:

<xsl:variable name="myDemoClass" >
   <xsl:choose>
     <xsl:when test="position() mod 2 = 0">
       <xsl:text>myDemoClass</xsl:text>
     </xsl:when>
     <xsl:otherwise>
       <xsl:text>myDemoClass otherClass</xsl:text>
     </xsl:otherwise>
   </xsl:choose>
</xsl:variable>

При этом мы можем изменить имя переменной, а затем мы можем изменить, например, содержимое div-класса.

<div class="{$myDemoClass}">

Привет!