2013-10-31 34 views
2

考慮下面的XML代碼:兩列的表格佈局(XSLT)

<tip> 
    <number>1</number> 
    <number>2</number> 
    <number>3</number> 
    <number>4</number> 
    <number>5</number> 
</tip> 

我想有一個HTML的輸出是這樣的:

<table> 
    <tr> 
     <td><number>1</number></td> 
     <td><number>2</number></td> 
    </tr> 
    <tr> 
     <td><number>3</number></td> 
     <td><number>4</number></td> 
    </tr> 
    <tr> 
     <td><number>5</number></td> 
    </tr> 
</table> 

我只是新的XSL,我希望有人可以幫助 我與這一個。

回答

3

你可以用mod(模)來做到這一點。

XML輸入

<tip> 
    <number>1</number> 
    <number>2</number> 
    <number>3</number> 
    <number>4</number> 
    <number>5</number> 
</tip> 

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="tip"> 
     <table> 
      <xsl:apply-templates select="number[not(position() mod 2 = 0)]"/> 
     </table> 
    </xsl:template> 

    <xsl:template match="number"> 
     <tr> 
      <td><xsl:value-of select="."/></td> 
      <td><xsl:value-of select="(following-sibling::number)[1]"/></td> 
     </tr> 
    </xsl:template> 

</xsl:stylesheet> 

輸出

<table> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>4</td> 
    </tr> 
    <tr> 
     <td>5</td> 
     <td/> 
    </tr> 
</table> 
+0

感謝@daniel! –

+0

@NicoMasuli - 非常受歡迎。如果這個答案足夠了,請點擊旁邊的複選標記來接受它。謝謝。 –