2008-11-01 77 views
4

我想创建一个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> 

而且所有组的项目= 0是一个颜色,组= 1的项目是另一个组,组= 2或者切换回第一个颜色,或者是它们自己的颜色。

所有我似乎可以发现有办法交替每一行,但我似乎无法“得到它”,实际上使用节点数据来帮助我做出决定。

回答

3

下面是使用“选择”根据组值应用不同类值的示例。如果您想以特定方式处理每个组,则类似于此的某些内容可能会起作用。如果处理组2你的判断逻辑是比较复杂的,那么你可以把更多的决策逻辑的“当”语句内测试为组2

<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> 

+0

谢谢!我能够根据您的答案获取我的代码。不仅如此,我还能够“获得它”,就像访问先前多云的实体属性一样。 – 2008-11-01 04:16:30

1

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

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

+0

感谢您的提示。我仍在消化如何访问属性数据,我一定会检查这些功能。 – 2008-11-01 04:19:15