2013-10-31 33 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 - 非常受欢迎。如果这个答案足够了,请点击旁边的复选标记来接受它。谢谢。 –