【问题标题】:Alternating colors交替颜色
【发布时间】:2010-09-20 07:17:40
【问题描述】:

我想创建一个 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 要么切换回第一种颜色,要么是它们自己的颜色。

我似乎发现有办法交替每一行,但在实际使用节点数据来帮助我做出决定时,我似乎无法“理解”。

【问题讨论】:

    标签: html xslt


    【解决方案1】:

    这是一个使用“选择”基于组值应用不同类值的示例。如果您想以特定方式对待每个组,则类似的方法会起作用。如果您处理第 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>
    

    【讨论】:

    • 谢谢!根据您的回答,我能够让我的代码正常工作。不仅如此,我还能够“得到它”访问我以前多云的实体属性。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的提示。我还在消化如何访问属性数据,我一定会检查这些函数。
    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2015-07-30
    • 2013-02-06
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多