[xsl] round-robin template call

Subject: [xsl] round-robin template call
From: Aragon Gouveia <aragon@xxxxxxxxxxx>
Date: Sun, 05 Apr 2009 18:47:42 +0200
Hi,

I'm having difficulty figuring out how to perform something in XSLT 1.0. I want to be able to call a template at random points in an XSLT document, and each time the template is called it outputs a different version of a node. Example:

<xsl:stylesheet>
<xsl:template match="/">
	<output>
		<xsl:call-template name="makenode"/>
		<tagX>data</tagX>
		<tagY>data</tagY>
		<xsl:call-template name="makenode"/>
	</output>
</xsl:template>
<xsl:template name="makenode">
	<xsl:choose>
		<xsl:when test="oddcalls()">
			<tagA type="odd">data</tagA>
		</xsl:when>
		<xsl:when test="evencalls()">
			<tagA type="even">data</tagA>
		</xsl:when>
	</xsl:choose>
</xsl:template>
</xsl:stylesheet>

Obviously variables and parameters can't be altered once declared, and I can't think of a way of doing this with a recursive template.

Any ideas?


Thanks, Aragon

Current Thread