XSLT从Template返回变量

时间:2014-12-02 05:11:07

标签: xml xslt

所以我有一些东西需要修复,而且我对XSLT知之甚少。我本质上想要保留我运行的模板中的变量。

<xsl:template name="repeatable">
  <xsl:param name="index" select="1" />
  <xsl:param name="total" select="10" />

  <xsl:if test="not($index = $total)">
      <xsl:call-template name="repeatable">
          <xsl:with-param name="index" select="$index + 1" />
      </xsl:call-template>
  </xsl:if>
  </xsl:template>

以上是我想要从中返回变量“$ total”的模板。下面的模板是我称之为上述模板的模板。

<xsl:template match="randomtemplate">
    <xsl:call-template name="repeatable" \>
</xsl:template>

基本上,我只想让“total”变量返回给我,或者以某种方式从randomtemplate中获取。

干杯

1 个答案:

答案 0 :(得分:1)

这可能实际上并不是您实际需要的,但您可以做的是更改repeatable模板,以便在达到总数时输出一个值,如下所示:

  <xsl:template name="repeatable">
    <xsl:param name="index" select="1" />
    <xsl:param name="total" select="10" />

    <xsl:choose>
      <xsl:when test="not($index = $total)">
         <xsl:call-template name="repeatable">
            <xsl:with-param name="index" select="$index + 1" />
         </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$index" />
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

然后,您可以将xsl:call-template包裹在xsl:variable中以捕获该值,然后输出

<xsl:variable name="result">
   <xsl:call-template name="repeatable" />
</xsl:variable>
<xsl:value-of select="$result" />

在这种情况下,这会输出10