RE: [xsl] call template based on element value?

Subject: RE: [xsl] call template based on element value?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 3 Aug 2005 22:10:00 +0100
> My xml structure is:
> 
> <Record>
> <recordId>1</recordId>
> <content>Some content</content>
> <image>align this image left</image>
> </Record>
> <Record>
> <recordId>2</recordId>
> <image>align this image right</image>
> <content/>
> </Record>
> 
> I have <xsl:template name="table-image-right"> and <xsl:template
> name="table-image-left">.
> 
> <xsl:for-each select="record">
> 	<xsl:if test="???">
> 		<xsl:call-template name="table-image-right"/> 
> (needs the recordid value)
> 	</xsl:if>
> 	<xsl:if test="???">
> 		<xsl:call-template name="table-image-left"/>
> 	</xsl:if>
> </xsl:for-each>
> 

I would change

<xsl:template name="table-image-right">

to

<xsl:template name="table-image-right" match="Record[recordId mod 2 = 1]">

and

<xsl:template name="table-image-left">

to

<xsl:template name="table-image-left" match="Record[recordId mod 2 = 0]".

and then the <xsl:for-each select="record"> instruction above can be simply
replaced by

<xsl:apply-templates select="Record"/>

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

Current Thread