RE: [xsl] alternative for modes

Subject: RE: [xsl] alternative for modes
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 12 Feb 2004 18:05:55 -0500
Hi Peter,

At 05:31 PM 2/12/2004, you wrote:
<xsl:template match="car">
        <xsl:param name="mode"/>

        <xsl:if test="$mode = 'blue'">
                <font color="blue"><xsl:value-of select="."/></font><br/>
        <xsl:if test="$mode = 'red'">
                <font color="red"><xsl:value-of select="."/></font><br/>

Well if it were this simple we'd be in business. This could be:

<xsl:template match="car">
  <xsl:param name="mode"/>
  <font color="{$mode}">
    <xsl:value-of select="."/>

... but somehow I don't think this reflects your real problem. You might however be able to do

<xsl:template match="car">
  <xsl:param name="mode"/>
  <xsl:apply-templates select="node()[$mode='blue'] mode="blue"/>
  <xsl:apply-templates select="node()[$mode='red'] mode="red"/>
  <xsl:apply-templates select="node()[$mode='green'] mode="green"/>

(Or use self::node()[$mode='blue'] to select the car, not its children, for the blue mode.)

This will work if you know in advance how many modes you have and what their names are. See, the conditional in a predicate can be anything; it doesn't necessarily have to relate to its context node directly.


Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.      
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:

Current Thread