2011-05-19 30 views
0

我有一個xslt樣式表,根據是否存在圖像,將xml文件中的數據格式化爲一列。有相當數量的數據,所以列太長,但我想嘗試將當前列分成2個相等的列。並想法我可以做到這一點?使用xslt將xml數據分成2列

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<table border="0" bordercolor="#606060" style="width:200px"> 
    <tr bgcolor="white" width="200px"> 
    </tr> 
    <xsl:for-each select="NewDataSet/Manufacturer"> 
    <tr> 
     <xsl:choose> 
     <xsl:when test="Image = 'none'"> 
      <td bgcolor="#dfdfdf"> 
      <a href="Vehicles.aspx?Manufacturer={ManufacturerID}" style="text-decoration:none;" runat="server"> 
       <xsl:value-of select="Manufacturer"/> 
      </a> 
      </td> 
     </xsl:when> 
     <xsl:otherwise> 
      <td> 
      <a href="Vehicles.aspx?Manufacturer={ManufacturerID}" style="text-decoration:none;" runat="server"> 
       <im alt="{Manufacturer}" src="Images/Manufacturers/{Image}" style="border-width: 0px; width: 50px; "/> 
      </a> 
      </td> 
     </xsl:otherwise> 
     </xsl:choose> 
    </tr> 
    </xsl:for-each> 
</table> 
</xsl:template> 

+0

這個命令對你有意義嗎?即,如果每個第二個元素都在新列中,那麼它會起作用,而列1是上半部分而列2是下半部分?當'Image ='none'時,您似乎也會將''元素放在其他''元素內# – 2011-05-19 09:44:26

+0

不,訂單不重要..我只需要將它分成大致2個等長的列..如果它的第一個一列中的一半,另一列中的下半部分,或者第二列中的每個第二元素都是100%。 – Grant 2011-05-19 09:49:08

回答

2

如何對這樣的事情

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <table border="0" bordercolor="#606060" style="width:200px"> 
    <tr bgcolor="white" width="200px"> 
    </tr> 
    <tr> 
    <xsl:for-each select="NewDataSet/Manufacturer"> 
     <xsl:choose> 
      <xsl:when test="position() mod 2 = 0"> 
       <!-- so essentialy on even numbered elements process the current and next elements --> 
       <td> 
        <xsl:call-template name="do-cell-content"> 
         <xsl:with-param name="node" select="."/> 
        </xsl:call-template> 
       </td> 
       <td> 
        <xsl:call-template name="do-cell-content"> 
         <xsl:with-param name="node" select="../Manufacturer[position()+1]"/> 
        </xsl:call-template> 
       </td> 
      <xsl:when> 
     </xsl:choose> 
    </xsl:for-each> 
    </tr> 
    </table> 
</xsl:template> 
</xsl:stylesheet> 

我已經提取的寫入細胞的另一個xsl:template稱爲內容和<xsl:choose>部分從您的示例部分do-cell-content

+0

像魅力一樣工作,非常感謝哈利。 – Grant 2011-05-19 10:48:58