Re: [xsl] using variable in mode attribute

Subject: Re: [xsl] using variable in mode attribute
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Fri, 10 Jan 2003 17:22:10 -0500
Hi Long,

At 03:53 PM 1/10/2003, you wrote:
I have the following code which does not work.
if I replace the mode="$BID" with mode="id1" in line 4, it works.
so my question is
does the mode attribute take a variable?

No, it doesn't (too bad).

if it does not, what should I do?

You could have a single alternate mode for B (say, call it "id"), and then differentiate among templates matching your different B elements in their matches:

<xsl:template match="B[@id = 'id1']" mode="id">

<xsl:template match="B[@id = 'id2']" mode="id">

...or do any of several other things (for example, xsl:choose) to achieve the same effect (processing conditioned on the value of the id element).

It may also interest you to know that if these are *real* (i.e. DTD-declared) ID attributes, you can do

<xsl:template match="id('id1')" mode="id">

since the id() function (which returns an element by the value of its ID attribute) can appear in a match pattern. But your attribute needs to be declared as type ID for this to work.


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