2014-04-22 126 views
0

我使用XML和XSL。修改表td寬度

我想用XML構建一個表格並使用XSL修改寬度。 我在XML表格將是:

<table> 
<tr><th>1</th><th>2</th><th>3</th><th>4</th></tr> 
<tbody> 
<tr><td>.</td><td>.</td><td>.</td><td>.</td></tr> 
<tr><td>.</td><td>.</td><td>.</td><td>.</td></tr> 
<tbody> 
</table> 

所以,我有4個列。修改4列寬度的最佳方法是什麼?

回答

0

我個人認爲這是一個很奇怪的問題。爲什麼使用xslt添加標記。

這是你正在生成的html,因此我假設你的gona以瀏覽器的方式顯示結果。然後我會建議你使用飛機舊css來做演示。

要做到這一點,只需將一個類添加到您的表標記,然後將CSS添加到樣式。

例子:

<table class="MyNewTable"> .... </table>

,然後添加一個樣式的一部分(內嵌或鏈接到一個單獨的文件)

<style type="text/css"> .MyNewTable td {width: 50px;} </style>

+0

好的,如果我這樣做,我怎麼能說每個列的寬度應該是什麼?我只知道如何設置整個桌子的寬度... – user3497759

+0

對不起,對已故的評論。你可以使用'nth-child()'選擇器來做到這一點。請參閱:http://www.w3schools.com/cssref/sel_nth-child.asp瞭解更多信息。使用選擇器可以設置任何單個列的寬度。例如:如果您有7列,並且想要設置第五列寬度和背景使用:'.MyNewTable tr td:nth-​​child(7n + 5){width:50px; background-color:red;}; – Thor

0

不知道爲什麼你想要做的是,在XSLT。 ..但在這裏你去 - 詳細編輯:

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

     <xsl:output method="html"/> 

     <xsl:template match="/"> 
      <html> 
       <head> 
        <title>Table example</title> 
        <style type="text/css"> 
         table.outputTable { width : 100%; border : 1px solid green;} 
         table.outputTable td { border-bottom : 1px solid gray; border-right : 1px solid gray;} 
         .oddRow {background-color : #CCCCFF;} 
         .evenRow {background-color : #FFCCCC;} 
         .col2 { width : 10% } 
         .col3 { width : 33% } 
        </style> 
       </head> 
       <body> 
        <xsl:apply-templates /> 
       </body> 
      </html> 

     </xsl:template> 

     <xsl:template match="table"> 
      <xsl:element name="table"> 
       <xsl:attribute name="class">outputTable</xsl:attribute> 
       <tbody> 
       <xsl:apply-templates select="tbody/tr"/> 
       </tbody> 
      </xsl:element> 
     </xsl:template> 

    <xsl:template match="tr"> 
     <xsl:element name="tr"> 
      <xsl:attribute name="class">oddRow</xsl:attribute> 
      <xsl:apply-templates /> 
     </xsl:element> 
    </xsl:template> 

     <xsl:template match="tr[position() mod 2 = 0]"> 
     <xsl:element name="tr"> 
      <xsl:attribute name="class">evenRow</xsl:attribute> 
      <xsl:apply-templates /> 
     </xsl:element> 
     </xsl:template> 

     <xsl:template match="td"> 
      <xsl:element name="td"> 
       <xsl:attribute name="class">col<xsl:value-of select="position()"/></xsl:attribute> 
       <xsl:value-of select="."/> 
      </xsl:element> 
     </xsl:template> 

    </xsl:stylesheet> 

希望它有幫助