我们可以有多个xsl:templates with match =“/”?

时间:2012-12-11 13:34:27

标签: xml xslt

我们可以拥有多个xsl:templates,匹配=&#34; /&#34;和不同的名字。基本上我想迭代一个xml直到某个级别,然后再次开始从&#34; /&#34;如果满足某些条件。所以我想根据一些条件制作<xsl:call-template name="option-1"><xsl:call-template name="option-1">,其中option-1和option-2分别类似于<xsl:template match="/" name="option-1"><xsl:template match="/" name="option-2">

如果有更好的方法,我是开放的。我想要的是再次从根节点开始迭代。

1 个答案:

答案 0 :(得分:4)

您正在寻找的概念是模板模式。你可以定义

<xsl:template match="/" mode="option1">

,同样option2,以及没有模式的初始启动模板

<xsl:template match="/">
  <xsl:choose>
    <xsl:when test="some-condition">
      <xsl:apply-templates select="/" mode="option1" />
    </xsl:when>
    <xsl:otherwise test="some-condition">
      <xsl:apply-templates select="/" mode="option2" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

XSLT 1.0 specXSLT 2.0 spec