我需要通过在XSL:FO中调用模板来创建一个表 对于例如 我希望能够调用模板函数
表格模板
<xsl:template name="getTable">
使用fo:table标签创建表并调用列模板并传递no of columns
的参数创建fo:body标签并调用行模板并将no的行作为参数传递
</xsl:template>
列模板,例如
<xsl:template name="getcolumn">
</xsl:template>
Row template
调用Cell模板并传递no of Cells参数
</xsl:template>
单元格模板
<xsl:template name="getCell">
调用另一个模板
</xsl:template>
我已经在XSL中创建了一个表:FO。我可以在XSL中创建表:通过下面的表格,但我希望创建一个表,因为我需要多次复制它,具体取决于输入。
<fo:table xsl:use-attribute-sets="Table" >
<fo:table-column />
<fo:table-column />
<fo:table-body>
<fo:table-row >
<fo:table-cell >
<fo:block xsl:use-attribute-sets="JobTaskHeaderBackground">
School1
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:call-template name="Required">
<xsl:with-param name="ElementToCheck" select='m:SchoolName' />
</xsl:call-template>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
答案 0 :(得分:0)
我需要多次复制它,具体取决于参数 例如(NoOfTables)PARAM = 2
您可以递归地进行模板调用,例如:
<xsl:template name="generate-tables">
<xsl:param name="number-of-tables"/>
<xsl:param name="number-of-rows"/>
<xsl:param name="number-of-columns"/>
<xsl:if test="$number-of-tables > 1">
<!-- code to generate a table -->
<!-- recursive call -->
<xsl:call-template name="generate-tables">
<xsl:call-template name="repeat">
<xsl:with-param name="number-of-tables" select="$number-of-tables - 1"/>
<xsl:with-param name="number-of-rows" select="$number-of-rows"/>
<xsl:with-param name="number-of-columns" select="$number-of-columns"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
这假设您希望所有生成的表具有相同数量的行和列。