Subject: RE: 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/
|