OK, you're stretching my ancient XSLT recollections, but what you've written just makes me scratch my head!
Try something like the following stylesheet (output is below): with any luck it illustrates a way to achieve what you're after. [[The stuff inside the square brackets where "dvalue" is found should be read as "given"; hence the XPath expression reads "the value of the @d attribute of the div element which has a "class" attribute of "version" and a "v" attribute found below as $vers.]] The other thing worth mentioning is that the "get-version-date" template is being called with the version number, but you still need to declare "vers" as a parameter in the declaration of the template.
I hope this is of some use!
Cheers, Paul
======================================================================= <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template name="get-version-date"> <xsl:param name="vers"></xsl:param> <xsl:param name="dvalue"><xsl:value-of select="//div[@class='version' and @v=$vers]/@d"/></xsl:param> Date string is <xsl:value-of select="$dvalue"/> to be sure. </xsl:template>
<xsl:template match="//div[@class='version']"> <xsl:call-template name="get-version-date"> <xsl:with-param name="vers"> <xsl:value-of select="./@v"/> </xsl:with-param> </xsl:call-template> </xsl:template>
</xsl:stylesheet>
======================================================================= Output is...
<?xml version="1.0" encoding="utf-8"?>
Date string is 2006-05-04 to be sure.
Date string is 2006-05-05 to be sure.
Date string is 2006-05-06 to be sure.