Re: [xsl] Modes - Necessary Construct or Syntactic Sugar

Subject: Re: [xsl] Modes - Necessary Construct or Syntactic Sugar
From: Liam R E Quin <liam@xxxxxx>
Date: Tue, 19 Mar 2013 21:58:19 -0400
On Tue, 2013-03-19 at 08:58 +0000, Ihe Onwuka wrote:
> Suppose there was a genuine use case for modes. By genuine I mean the
> transform requires me to process the same nodes more than once and in
> different ways.
> 
> Can I do this without using modes.

Yes, but not in he way you describe, and not easily.

For example, you can pass a parameter to every template and have the
contents of every template wrapped inside an xsl:choose. Essentially you
end up duplicating the mode mechanism of apply-templates, though, with a
lot of inconvenience. Here's a snippet of one possible approach.

<xsl:template name="title">
  <xsl:param name="mode" select=" 'default' " as="xs:string" />
  <xsl:choose test="$mode eq 'index'>
    . . .
  </xsl:choose>
  <xsl:otherwise>
    <xsl:call-template name="process-contents">
      <xsl:with-param name="input" select="node()" />
      <xsl:with-param name="mode" select="$mode" />
    </xsl:call-template>
  </xsl:otherwise>
</xsl:template>

and so on.

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Ankh: irc.sorcery.net irc.gnome.org freenode/#xml

Current Thread