我们可以拥有多个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">
。
如果有更好的方法,我是开放的。我想要的是再次从根节点开始迭代。
答案 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>