Thanks, I have used this but modified it slightly... First the whole chunk below <!-- Modifications template --> is now not used and can be removed! 2nd I added widths to the columns so they all line up the same (30% for changenumber, user and filename, 7% for type).
(I would post my code, but I have also use DomCollapse to make the changelists hide-able so there are more changes.) Arieh. On Apr 15, 11:24 pm, Ian G <[email protected]> wrote: > Thought folks might be interested in the following XSL which has come > from modifying the modifications.xsl style to be easier to read for > typical check ins on the project I'm working on. > > So where the built in template is a line > > | type | user | file | comment | date | > > for every file. > > We're using Perforce so have multiple files per transactional > changelist with longish comments which were getting repeated and hard > to read. The XSL below formats the change as a block > > | Change # | User | Date | > | comment | > | directory | file | type | > | directory | file2 | type | > ... > > per changelist. > > Hope this is useful to some folks. > > Ian > > P.S. Submitted to the user list rather than dev list since I'm > assuming its not suitable for replacing the standard template for > everyone as it groups by changeNumber I suspect not every SCM supports/ > populates this (CVS? Sourcesafe? Clearcase?). If I'm wrong then feel > free to include it. > > ---- > > <?xml version="1.0"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > > <xsl:output method="html"/> > > <xsl:variable name="modification.list" select="/cruisecontrol/ > modifications/modification"/> > <xsl:key name="modifications-by-changelist" match="modification" > use="changeNumber" /> > > <xsl:template match="/"> > <table class="section-table" cellpadding="2" cellspacing="0" > border="0" width="98%" style="border-collapse: > collapse;" > > <!-- Modifications --> > <tr> > <td class="sectionheader" colspan="5"> > Modifications since last build (<xsl:value-of > select="count($modification.list)"/>) > </td> > </tr> > > <!-- Seehttp://www.jenitennison.com/xslt/grouping/muenchian.html > for an > explanation of this grouping trick. --> > <xsl:for-each select="/cruisecontrol/modifications/ > modification[count(. | key('modifications-by-changelist',changeNumber) > [1]) = 1]"> > <xsl:sort select="changeNumber"/> > <tr style="font-weight: bold;"> > <td class="" valign="top"> > <xsl:value-of select="changeNumber"/ > > </td> > <td class="" valign="top"> > <xsl:value-of select="user"/> > </td> > <td class="" valign="top"> > <xsl:value-of select="date"/> > </td> > </tr> > <tr style="border-bottom: 1px dotted gray;"> > <td class="section-data" valign="top" colspan="3"> > <xsl:value-of select="comment" /> > </td> > </tr> > <xsl:for-each select="key('modifications-by- > changelist', changeNumber)"> > <xsl:sort select="project" /> > <tr> > <xsl:if test="position() mod 2=0"> > <xsl:attribute name="class">section- > evenrow</xsl:attribute> > </xsl:if> > <xsl:if test="position() mod 2!=0"> > <xsl:attribute name="class">section- > oddrow</xsl:attribute> > </xsl:if> > <td class="section-data"> > <xsl:value-of select="project" /> > </td> > <td class="section-data"> > <xsl:value-of select="filename" /> > </td> > <td class="section-data"> > <xsl:value-of select="@type"/> > </td> > </tr> > </xsl:for-each> > <tr style="border-bottom: 1px solid;"> > <td colspan="0"></td> > </tr> > </xsl:for-each> > </table> > </xsl:template> > > <!-- Modifications template --> > <xsl:template match="modification"> > <tr> > <xsl:if test="position() mod 2=0"> > <xsl:attribute name="class">section-oddrow</ > xsl:attribute> > </xsl:if> > <xsl:if test="position() mod 2!=0"> > <xsl:attribute name="class">section-evenrow</ > xsl:attribute> > </xsl:if> > > <td class="section-data" valign="top"><xsl:value-of > select="@type"/></td> > <td class="section-data" valign="top"><xsl:value-of > select="user"/></td> > <td class="section-data" valign="top"><xsl:value-of > select="changeNumber"/></td> > <td class="section-data" valign="top"> > <xsl:choose> > <xsl:when test="count(url) = 1 "> > <a> > <xsl:attribute > name="href"> > > <xsl:value-of select="url" /> > </xsl:attribute> > <xsl:if > test="project != ''"><xsl:value-of > select="project"/>/</xsl:if> > <xsl:value-of > select="filename"/> > </a> > </xsl:when> > <xsl:otherwise> > <xsl:if test="project > != ''"><xsl:value-of > select="project"/>/</xsl:if> > <xsl:value-of > select="filename"/> > </xsl:otherwise> > </xsl:choose> > </td> > <td class="section-data" valign="top"><xsl:value-of > select="comment"/></td> > <td class="section-data" valign="top"><xsl:value-of > select="date"/></td> > </tr> > </xsl:template> > </xsl:stylesheet> -- Subscription settings: http://groups.google.com/group/ccnet-user/subscribe?hl=en
