向表中添加备用颜色

时间:2011-09-15 08:32:36

标签: xslt

我有一个asp.net Web应用程序。应用程序从xml读取数据。 xml引用了一个xslt文件,它负责表的设计和对齐。我以动态方式向xml添加数据。 我希望表格的每个替代行都有一个颜色(比如灰色)以便于阅读。我相信它可以在xslt本身使用代码行

完成
 <xsl:if test="(position() mod 2 = 0)">

有人可以告诉我怎么做吗?我已将xslt完全发布在下方。

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet  version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">

    <html>
      <head>
        <title>VPGate Media Mixer</title>

        <meta http-equiv="expires" content="0"/>
        <meta http-equiv="pragma" content="no-cache"/>
        <meta http-equiv="cache-control" content="no-cache, must-revalidate"/>
        <meta http-equiv="refresh" content="15"></meta>
        <script src="/Common/common.js\" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="style001.css" />
        <link rel="stylesheet" type="text/css" href="Grid.Default.css" />


      </head>

      <body class="WorkArea">       
        <div class="divSummaryHeader" id="SummaryHeader">
          <h1>Media Mixer - VPGate</h1>

          <xsl:for-each select="MMDiagnostics/Conference">
            <h1>
              Media Mixer - <xsl:value-of select="name"/>
            </h1>
          </xsl:for-each>
        </div>

        &#160;



        <div class="RadGrid RadGrid_Default" id="SummaryData" style="position:absolute;width:630px;overflow:auto">

          <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0" >
            <tr>
              <input type="button" class="formEditBtn" id="SubBtn" value="Refresh" onclick="window.location=window.location;"/>

              </tr>
              <tr>
                <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;" colspan="2">Conference</td>
              </tr>

              <tr>
                <td>
                  <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0" >
                    <tr>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference Name</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Conference Id</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Address</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Port</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Composite Ssrc</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">No Of Participants</td>
                    </tr>

                    <xsl:for-each select="MediaMixer/Conference">
                      <!--<xsl:sort select="Name"/>-->
                      <xsl:if test="(position() mod 2 = 0)">

                        <tr class="rgAltRow SummaryTableDataRow">
                          <td valign = "top">
                            <xsl:value-of select="Name"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="ConfId"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="CompositeAddress"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="CompositePort"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="CompositeSsrc"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="NoOfParticipants"/>
                          </td>
                        </tr>
                      </xsl:if>

                      <xsl:if test="(position() mod 2 = 1)">
                        <td bgcolor="#aaaaff">
                          <tr class="rgAltRow SummaryTableDataRow">
                            <td valign = "top">
                              <xsl:value-of select="Name"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="ConfId"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositeAddress"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositePort"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="CompositeSsrc"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="NoOfParticipants"/>
                            </td>
                          </tr>
                        </td>
                      </xsl:if>

                    </xsl:for-each>

                  </table>
                </td>
              </tr>
            </table>

            &#160;

            <table border="0" class="rgMasterTable rgClipCells" cellspacing="1" cellpadding="1" >
              <tr>
                <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;" colspan="2">Participant</td>
              </tr>

              <tr>
                <td>

                  <table border="0" class="rgMasterTable rgClipCells" cellspacing="0" cellpadding="0" >
                    <tr>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">ID 1</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">ID 2</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant Address</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">Participant Listening Port</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">MM Listening Port</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">SSRC From Participant</td>
                      <td class="rgHeader SummaryTableHdrRow" style="font-weight:bold;">SSRC From MM</td>
                    </tr>

                    <xsl:for-each select="MediaMixer/Conference/Participant">

                      <xsl:if test="(position() mod 2 = 0)">

                        <tr class="rgAltRow SummaryTableDataRow">
                          <td valign = "top">
                            <xsl:value-of select="ID1"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="ID2"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="ParticipantAddress"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="ParticipantListeningPort"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="MMListeningPort"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="SSRCFromParticipant"/>
                          </td>
                          <td valign = "top">
                            <xsl:value-of select="SSRCFromMM"/>
                          </td>
                        </tr>
                      </xsl:if>

                      <xsl:if test="(position() mod 2 = 1)">
                        <td bgcolor="#aaaaff">
                          <tr class="rgAltRow SummaryTableDataRow">
                            <td valign = "top">
                              <xsl:value-of select="ID1"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="ID2"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="ParticipantAddress"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="ParticipantListeningPort"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="MMListeningPort"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="SSRCFromParticipant"/>
                            </td>
                            <td valign = "top">
                              <xsl:value-of select="SSRCFromMM"/>
                            </td>

                          </tr>
                        </td>
                      </xsl:if>
                    </xsl:for-each>

                  </table>
                </td>
              </tr>
            </table>


            &#160;


            <div style="display:none">
              <iframe id="frameUpdate" name="frameUpdate" width="100%"></iframe>
            </div>


          </div>

          </body> 
    </html>
    </xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:2)

你实际上是在正确的轨道上。分配编号的css类并使用position()mod 2来计算要调用的css类。

以下是演示:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output version="1.0" encoding="utf-8" indent="yes" method="html"/>
<xsl:template match="/">
  <xsl:variable name="sortValue">title</xsl:variable>
  <style type="text/css">
     .row0 { background-color: blue; }
     .row1 { background-color: red; }
   </style>
   <table border='1'>
      <tr>
         <th>ID</th>
         <th>Artist</th>
         <th>Title</th>
         <th>Album</th>
         <th>Length</th>
      </tr>
    <xsl:for-each select="*/song">
         <xsl:variable name="rowClass">
              row <xsl:number value="position() mod 2"/> 
         </xsl:variable>     
       <tr>
         <td class="{$rowClass}"><xsl:value-of select="./@id"/></td>
         <td class="{$rowClass}"><xsl:value-of select="./artist"/></td>
         <td class="{$rowClass}"><xsl:value-of select="./title"/></td>
         <td class="{$rowClass}"><xsl:value-of select="./album"/></td>
         <td class="{$rowClass}"><xsl:value-of select="./length"/></td>
      </tr>
   </xsl:for-each>
 </table>

HTH。