Re: [xsl] computed <xsl:apply-templates mode=

Subject: Re: [xsl] computed <xsl:apply-templates mode=
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 08 Dec 2004 15:42:57 -0500
Stephen,

At 01:49 PM 12/8/2004, you wrote:
I am <xsl:sort>ing elements and then using <xsl:apply-templates
select=".">.  I need to set the @mode attribute of
<xsl:apply-templates>, with a value from the XML.  As @mode takes a
qname, not an expression, I cannot reference a variable (set a
variable with <xsl:value-of> and call $var_name), reference a node (
self::node()/@my_attribute), or call a function (
current()/@my_attribute or id() or key() ).  Is there any way I can
accomplish this?

You can't select modes dynamically, no.


But you could say <xsl:apply-templates select="." mode="dispatch"/> and then have one or more templates in the "dispatch" mode that would break things out.

This can actually be quite neat:

<xsl:template match="red|green">
  <div color="name()">
  <!-- red and green stuff -->
  <xsl:apply-templates select="." mode="dispatch"/>
</xsl:template>

<xsl:template match="red" mode="dispatch">
  <!-- red stuff -->
</xsl:template>

<xsl:template match="green" mode="dispatch">
  <!-- green stuff -->
</xsl:template>

etc.

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

Current Thread