<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="iso-8859-15" method="html" indent="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/> <xsl:key name="entry-by-date" match="entry" use="date"/> <xsl:template match="/changelog"> <html> <head> <title>CVS-ChangeLog</title> <meta name="author" content="The cvs2pl stylesheet from Alexander Ruether"/> <meta http-equiv="expires" content="0"/> <style type="text/css"> h3 { background-color: #CCCCFF; color: #000000; padding: 2px; } h4 { background-color: #CCE5FF; color: #000000; padding: 2px; } .rev { color: #808080} </style> </head> <body> <xsl:param name="id_counter" select="0"/> <xsl:for-each select="entry[count(. | key('entry-by-date', date)[1]) = 1]"> <h3> <xsl:value-of select="date"/> </h3> <ul> <xsl:for-each select="key('entry-by-date', date)"> <li> <h4> <xsl:value-of select="author"/> <xsl:text> - </xsl:text> <xsl:value-of select="concat('(',time,')')"/> </h4> <p> <xsl:call-template name="br-replace"> <xsl:with-param name="word" select="msg"/> </xsl:call-template> </p> <div id="show_{generate-id(.)}" onmouseover="this.style.cursor='hand'" onclick="list_{generate-id(.)}.style.display='block'; this.style.display='none'"><strong>show concerned files...</strong></div> <div id="list_{generate-id(.)}" onmouseover="this.style.cursor='hand'" onclick="show_{generate-id(.)}.style.display='block'; this.style.display='none'" style="display:none"> <ul> <xsl:for-each select="file"> <li> <xsl:value-of select="name"/> <span class="rev"> <xsl:text> - Rev: </xsl:text> <xsl:value-of select="revision"/> <xsl:text>, Status: </xsl:text> <xsl:value-of select="cvsstate"/> </span> </li> </xsl:for-each> </ul> </div> </li> <br/> </xsl:for-each> </ul> </xsl:for-each> </body> </html> </xsl:template> <xsl:template name="br-replace"> <xsl:param name="word"/> <!-- </xsl:text> on next line on purpose to get newline --> <xsl:variable name="cr"> <xsl:text> </xsl:text> </xsl:variable> <xsl:choose> <xsl:when test="contains($word,$cr)"> <xsl:value-of select="substring-before($word,$cr)"/> <br/> <xsl:call-template name="br-replace"> <xsl:with-param name="word" select="substring-after($word,$cr)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$word"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>