交替的颜色

时间:2008-11-01 02:16:21

标签: html xslt

我想创建一个HTML表格,其中行颜色会根据位置和内容而变化。但是我不想交替每一行,而是希望能够将行组合在一起,这样我就可以拥有这样的XML:

<itemlist>
   <item group="0">Conent...blah blah</item>
   <item group="0">Content...who cares</item>
   <item group="1">Content</item>
   <item group="2">Content</item>
   <item group="2">Content</item>
</itemlist>

所有group = 0的项目都是一种颜色,group = 1的项目是另一种,group = 2要么切换回第一种颜色,要么是他们自己的颜色。

所有我似乎都能找到替代每一行的方法,但在实际使用节点数据来帮助我做出决定时,我似乎无法“理解”。

2 个答案:

答案 0 :(得分:3)

以下是使用“选择”基于组值应用不同类值的示例。如果您想以特定方式处理每个组,那么类似于此的内容将起作用。如果处理第2组的决策逻辑更复杂,那么您可以在第2组的“when”语句测试中添加其他决策逻辑。

<xsl:template match="/">
    <ul>
        <xsl:apply-templates select="itemlist/item"/>
    </ul>
</xsl:template>

<xsl:template match="item">
    <li>
        <xsl:attribute name="class">
            <xsl:choose>
                <xsl:when test="@group = 0">
                    red
                </xsl:when>
                <xsl:when test="@group = 1">
                    green
                </xsl:when>
                <xsl:when test="@group = 2">
                    blue
                </xsl:when>
                <xsl:otherwise>
                    black
                </xsl:otherwise>
            </xsl:choose>
        </xsl:attribute>
        <xsl:value-of select="."/>
    </li>
</xsl:template>

答案 1 :(得分:1)

前两个组很简单,因为您可以根据组号解析它们。

要处理第2组,请考虑使用preceding函数获取proir注释列表,并使用count确定有多少注释。然后,您可以根据计数是偶数还是奇数来替换值。