3

我们可以有多个带有 match="/" 和不同名称的 xsl:templates。基本上我想迭代一个 xml 直到某些级别,然后如果满足某些条件,则从“/”再次开始迭代。因此,我正在考虑根据选项 1 和选项 2 分别类似于和的某些条件来制作<xsl:call-template name="option-1">or 。<xsl:call-template name="option-1"><xsl:template match="/" name="option-1"><xsl:template match="/" name="option-2">

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

4

1 回答 1

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 规范, XSLT 2.0 规范

于 2012-12-11T14:45:46.803 回答