我需要创建两个填充空间的独立模板。一个占据49个空间,另一个占549个空间。我在模板上找到了我认为可以工作但我无法确切知道它在做什么,我是xml的新手。
<!-- Template Filler-->
<xsl:template name="Filler">
<xsl:param name="fillercount" select="1"/>
<xsl:if test="$fillercount > 0">
<table class="tabledetails">
<tr>
<td>
<xsl:value-of select="translate(' ', ' ', ' ')"/>
</td>
</tr>
</table>
<xsl:call-template name="Filler">
<xsl:with-param name="fillercount" select="$fillercount - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
这是我需要的,并用select="49"
来称呼它,或者我读错了。
如果现在这就是我需要的,我怎么能实现这个目标呢?
答案 0 :(得分:0)
您还没有说出您想要的输出。如果使用参数49调用此模板,则输出将包含49个表,每个表包含一行和一个列,单元格的内容为非中断空格字符。生成不间断空格字符的方式非常奇怪:translate()调用将空格字符作为输入,然后通过用非空格替换所有空格来处理它。据推测,它是代码的缩减版本,在某个阶段做了更明智的事情。
代码的基本结构是一个递归模板,它接受一个参数,比如49,输出一个“东西”(在这种情况下是一个单例表),然后调用自己再次N-1时间做同样的事情。这是在XSLT 1.0中做N次的适当方法。 (在2.0中,您可以使用<xsl:for-each select="1 to $N">
,这对于使用命令式语言的程序员来说更直观。)