RE: [xsl] alternative for modes

Subject: RE: [xsl] alternative for modes
From: "Peter Billen" <peter@xxxxxxxxxxx>
Date: Fri, 13 Feb 2004 00:28:10 +0100
Hello,

The first template doesn't work: $mode is just a string to know what we
want/what we are doing when we are in the <car>-element, nothing more.

About the second template: so actually there hasn't changed anything since
my 'original example', except the fact that the if-test is moved into the
predicate of the xpath-expression, and 3 'new' templates which all matches
the element <car>, but each of them has a different mode (green, red and
blue). So the condition to see why we are in the <car>-element and the
simulation of multiple modes (propagating mode from <streetrace> ==> sorting
template ==> <car>) is still there?

I'm starting to believe there is no real better solution for this; at least
if we are only using XSLT1.0 functions.

Thanks for your time,

Peter

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Wendell Piez
Sent: vrijdag 13 februari 2004 0:06
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] alternative for modes

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>
>         <xsl:if test="$mode = 'red'">
>                 <font color="red"><xsl:value-of select="."/></font><br/>
>         </xsl:if>
></xsl:template>

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="."/>
   </font>
</xsl:template>

... 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"/>
</xsl:template>

(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.

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
======================================================================


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread