[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl]


Subject: RE: [xsl] <xsl:test="">
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 16 Sep 2004 12:03:05 +0100

Use 

<xsl:apply-templates mode="x" select="."/> 

<xsl:template mode="x" match="forObj | flow | step">

Doing an explicit test on name() should only be a last resort: template
rules are there for this job. 

Note that you can give the same template both a name and a match pattern if
you need to, and invoke it either by apply-templates or by call-template.

You could write (name()='forObj' or name()='flow'...), and in XSLT 2.0 you
could write <xsl:if test="name() = ('forObj', 'flow', 'step')"> but it's not
the right answer here.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Phillip Nicolson [mailto:pjn3@xxxxxxxxxxxxx] 
> Sent: 16 September 2004 10:58
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] <xsl:test="">
> 
> I have a stylesheet containing a number of <xsl:test> statements. 
> 
> Rather than having:
> 
> <xsl:if test="name() = 'forObj'">...........call template
> <xsl:if test="name() = 'flow'">............call template
> <xsl:if test="name() = 'step'">............call template
> ....etc 
> 
> all of which call the same template is it possible to test if name() =
> forObj OR flow OR step etc in one statement?
> 
> Many thanks for suggestions
>  
> -- 
> Phillip Nicolson			
> Department of Physics & Astronomy		Phone:	(0)116 2523581
> University of Leicester				Email:	
> pjn3@xxxxxxxxxxxxx
> Leicester        LE1 7RH			Web:	
> http://www.astrogrid.org


Current Thread
Keywords