使用 xslt 创建空间填充模板



我需要创建两个单独的模板来填充空间。一个占用 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(' ', ' ', '&#160;')"/>
          </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"来称呼它,还是我读错了。如果这是我现在需要的,我该如何实现这一目标?

你还没有说你想要什么输出。如果使用参数 49 调用此模板,则输出将包含 49 个表,每个表包含一行和一个列,单元格的内容为不间断的空格字符。生成不间断空格字符的方式非常奇怪:translate() 调用将空格字符作为输入,然后通过用不间断空格替换所有空格来处理它。据推测,它是代码的精简版本,在某个阶段做了一些更明智的事情。

代码的基本结构是一个递归模板,它接受一个参数,比如 49,输出一个"东西"(在本例中为单例表),然后调用自身再次执行相同的操作 N-1 次。这是在 XSLT 1.0 中执行 N 次操作的适当方法。(在 2.0 中,您可以使用 <xsl:for-each select="1 to $N"> ,这对于使用命令式语言的程序员来说更加直观。

最新更新