如何在XSLT中显示一个字符n次?

low*_*key 11 xslt

我有一个带参数的模板.如何插入标签字符n次?

n是参数的值.

Fly*_*179 12

只需递归调用它; 如果n> 1,则输出一个选项卡,然后再次传入n-1调用相同的模板.

<xsl:template name="repeat">
  <xsl:param name="output" />
  <xsl:param name="count" />
  <xsl:if test="$count &gt; 0">
    <xsl:value-of select="$output" />
    <xsl:call-template name="repeat">
      <xsl:with-param name="output" select="$output" />
      <xsl:with-param name="count" select="$count - 1" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

正如已经指出的那样,这个例子实际上会输出至少一个.根据我的经验,输出是空格,通常需要它.您可以以任何您认为合适的方式调整递归模板的原理.


Mic*_*Kay 11

在XSLT 2.0中:

<xsl:for-each select="1 to $count">&#x9;</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

(遗憾的是,我怀疑如果您使用XSLT 2.0,则无需提出问题).

XSLT 1.0常用的另一种技术是黑客攻击:

<xsl:for-each select="//*[position() &lt;= $count]">&#x9;</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

如果源文档中的元素数量大于要输出的制表符数量,则可以使用.

  • +1对于固定的"如果使用此模式,你可能会下地狱"迭代.很多时候,样式表有足够的节点,所以`document('')// node()`很方便. (2认同)