2008-11-01 152 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