2011-02-10 10 views
6

का उपयोग कर एक टीआर कक्षा में पंक्ति रंग बदलना मेरे पास एक एक्सएसएल दस्तावेज़ है जिसमें इसमें शामिल लेखों की एक वास्तविक संख्या है। मैं लेख के पृष्ठभूमि रंग वैकल्पिक करने की जरूरत है - "अजीब" फिर "यहाँ तक कि"एक्सएसएल

<xsl:for-each select="newsletter/section/article"> 
    <tr class="odd" style="background-color: #efefef;"> 
     <td valign="top"> 
      <xsl:element name="a"> 
       <xsl:attribute name="href"> 
        <xsl:value-of select="link" /> 
       </xsl:attribute> 
       <img align="left" valign="top" width="110" 
          style="padding: 0 4px 4px 0; border:0;"> 
        <xsl:attribute name="alt"> 
         <xsl:value-of select="title" /> 
        </xsl:attribute> 
        <xsl:attribute name="src"> 
         <xsl:value-of select="img" /> 
        </xsl:attribute> 
       </img> 
      </xsl:element> 
     </td> 
     <td valign="top" style="padding: 4px 4px 18px 0;"> 
      <strong> 
       <xsl:element name="a"> 
        <xsl:attribute name="href"> 
         <xsl:value-of select="link" /> 
        </xsl:attribute> 
        <xsl:value-of select="title"/> 
       </xsl:element> 
      </strong> 
      <br /> 
      <xsl:value-of select="excerpt"/> 
     </td> 
    </tr> 
</xsl:for-each> 

Ive इस पोस्ट को देखा: HTML table with alternating row colors via XSL

लेकिन मेरे मामले विभिन्न मेरा मानना ​​है कि है। मुझे बस प्रत्येक पुनरावृत्ति पर टीआर वर्ग बदलने की जरूरत है। अजीब स्वरूपण के लिए खेद है, मुझे यहां क्रोम में कोड चिपकाने में समस्याएं आ रही हैं।

+0

आप के बारे में कैसे अपनी आवश्यकताओं के पोस्ट में उन आप जुड़े हैं करने के लिए अलग-अलग हैं और अधिक समझा सकते हैं। –

+0

अच्छा सवाल, +1। एक पूर्ण और संक्षिप्त समाधान के लिए मेरा जवाब देखें। :) –

+0

वास्तव में यह एक्सएसएल के माध्यम से वैकल्पिक पंक्ति रंगों के साथ [एचटीएमएल टेबल] का एक सटीक डुप्लिकेट है (http://stackoverflow.com/questions/469917/html-table-with-alternating-row-colors-via-xsl) –

उत्तर

8

उपयोग:

<xsl:for-each select="newsletter/section/article"> 
    <xsl:variable name="vColor"> 
    <xsl:choose> 
     <xsl:when test="position() mod 2 = 1"> 
     <xsl:text>#efefef</xsl:text> 
     </xsl:when> 
     <xsl:otherwise>#ababab</xsl:otherwise> 
     </xsl:choose> 
     </xsl:variable> 


    <tr class="odd" style="background-color: {$vColor};"> 
+0

धन्यवाद। यह हल हो गया। मैंने जो प्रश्न जोड़ा है, उसके माध्यम से पढ़ना (मुझे समझने के बाद) मैं देखता हूं कि मेरी आवश्यकताएं समान थीं, इसलिए उत्तर देने के लिए समय निकालने के लिए धन्यवाद। – BobFlemming

+0

@dimitre - क्या '= 1' आवश्यक है? मैं उम्मीद परिणाम प्राप्त करता है, तो मैं सिर्फ कार्य करें: ' #efefef #ababab '। क्या कोई कारण यह बुरा विचार होगा? –

+0

@ डेवनुल। मुझे लगता है कि यह ठीक है। बस एक संख्या-> बूलियन रूपांतरण। – Flack

0

position() और शेष द्वारा विभाजित करते समय शेष का उपयोग करें।

0

आपका मामला बहुत समान है। आपको जो करना चाहिए वह स्थिति के आधार पर कक्षा के नाम को परिभाषित करना है। @ जिम गैरीसन आपको अच्छा संकेत देता है लेकिन मुझे लगता है कि उदाहरण जरूरी है क्योंकि आपके द्वारा संदर्भित उदाहरणों में position() के साथ उदाहरण हैं और प्रश्न पूछा गया है।

<xsl:for-each select="newsletter/section/article"> 
    <!-- create index-based variable --> 
    <xsl:variable name="classname"> 
    <xsl:choose> 
     <xsl:when test="position() mod 2 = 0"> 
     <xsl:text>even</xsl:text> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:text>odd</xsl:text> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:variable> 
    <!-- insert contents of your variable --> 
    <tr class="{$classname}" style="background-color: #efefef;"> 
.... 
2
<xsl:for-each select="date"> 
    <tr> 
     <xsl:if test="position() mod 2 = 1"> 
      <xsl:attribute name="class">odd</xsl:attribute> 
      <xsl:attribute name="style">background-color: #efefef;" 
      </xsl:attribute> 
     </xsl:if> 
     <td valign="top"> 
      <a href="{link}"> 
       <img align="left" valign="top" width="110" 
          style="padding: 0 4px 4px 0; border:0;" 
          alt="{title}" 
          src="{img}"/> 
      </a> 
     </td> 
     <td valign="top" style="padding: 4px 4px 18px 0;"> 
      <strong> 
       <a href="{link}"> 
        <xsl:value-of select="title"/> 
       </a> 
      </strong> 
      <br /> 
      <xsl:value-of select="excerpt"/> 
     </td> 
    </tr> 
</xsl:for-each> 
+0

+1। –

संबंधित मुद्दे