Hi, I didn't include a second stylesheet, for weekly summary ChangeLogs, in my Ant build example for generating ChangeLogs during automated builds. It's attached here. Jim Doyle
<?xml version="1.0"?> <!-- Takes ChangeLog XML and turns it into HTML, for posting on our webserver. Invoked from a target in our buildfile. Meant to be used on weekly build logs as sort of a status report, so entries are ordered differently (by author, and ascending time) and time is displayed differently (weekday names). This stylesheet supports HTML tags in the message piece, though it does require that they be properly-formed XML elements (i.e., they have closing tags). $Id: changelog_summary.xsl,v 1.1 2001/04/20 14:56:25 builder Exp $ --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:cvs2cl="http://www.red-bean.com/xmlns/cvs2cl/"> <xsl:param name="logtime"/> <xsl:param name="branchname"/> <xsl:output method="html" indent="yes"/> <!-- Copy standard document elements. Elements that should be ignored must be filtered by apply-templates tags. --> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="attribute::*[. != '']"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="cvs2cl:changelog"> <html> <head> <title><xsl:value-of select="$branchname"/> ChangeLog for <xsl:value-of select="$logtime"/></title> </head> <body> <h2><xsl:value-of select="$branchname"/> ChangeLog for <xsl:value-of select="$logtime"/></h2> <xsl:apply-templates select=".//cvs2cl:entry"> <xsl:sort select="cvs2cl:author" data-type="text" order="ascending"/> <xsl:sort select="cvs2cl:date" data-type="text" order="ascending"/> <xsl:sort select="cvs2cl:time" data-type="text" order="ascending"/> </xsl:apply-templates> </body> </html> </xsl:template> <!-- Process each entry --> <xsl:template match="cvs2cl:entry"> <table width="100%" border="1"> <tr> <td bgcolor="#ccccff" align="left"> <xsl:apply-templates select="cvs2cl:author"/> <br/> <xsl:apply-templates select="cvs2cl:weekday"/> <xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text> <xsl:apply-templates select="cvs2cl:time"/> </td> <td width="*"> <xsl:apply-templates select="cvs2cl:msg"/> </td> </tr> <tr><td colspan="2"> <p align="left"> <ul> <xsl:apply-templates select="cvs2cl:file"/> </ul> </p> </td></tr> </table> <br/> </xsl:template> <xsl:template match="cvs2cl:weekday"> <i><xsl:value-of select="."/></i> </xsl:template> <xsl:template match="cvs2cl:time"> <i><xsl:value-of select="."/></i> </xsl:template> <xsl:template match="cvs2cl:author"> <i><xsl:value-of select="."/></i> </xsl:template> <xsl:template match="cvs2cl:file"> <li><xsl:value-of select="cvs2cl:name"/></li> </xsl:template> <!-- Any elements within a msg are processed, so that we can preserve HTML tags. --> <xsl:template match="cvs2cl:msg"> <b><xsl:apply-templates/></b> </xsl:template> </xsl:stylesheet>