在XSLT 2.0:
<xsl:for-each select="1 to xs:integer(@colspan)">
<fo:table-column/>
</xsl:for-each>
在XSLT 1.0:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="table[@colspan]">
<fo:table>
<xsl:call-template name="generate"/>
</fo:table>
</xsl:template>
<xsl:template name="generate">
<xsl:param name="pTimes" select="@colspan"/>
<xsl:if test="$pTimes > 0">
<fo:table-column/>
<xsl:call-template name="generate">
<xsl:with-param name="pTimes" select="$pTimes -1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
當在下面的XML文檔施加這種轉變:
<table colspan="3"/>
想要的,正確的結果產生:
<fo:table xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
</fo:table>
謝謝,我使用Xalan所以很遺憾沒有XSLT 2.0 – 2012-03-12 16:27:15