xsl-list
[Top] [All Lists]

Re: computed <xsl:apply-templates mode=

2004-12-08 13:42:57
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(_at_)mulberrytech(_dot_)com
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
======================================================================


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>