blob: a625dab1f4a756c49c09143b92f7a5fce1200c5f [file] [log] [blame]
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:param name="baseline" select="ResultReport_latest.xml"/>
<xsl:param name="threshold" select="5"/>
<xsl:template match="/">
<html>
<title>Comparison Result Report</title>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="resultsfile">
<table border="1">
<tr>
<td>
<b>Filename:</b>
</td>
<td>
<xsl:value-of select="@filename"/>
</td>
</tr>
<tr>
<td>
<b>Description:</b>
</td>
<td>
<xsl:value-of select="testfile/@desc"/>
</td>
</tr>
<tr>
<td>
<b>Time:</b>
</td>
<td>
<xsl:value-of select="testfile/@time"/>
</td>
</tr>
</table>
<P/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="testfile">
<table border='1'>
<tr>
<td><b>Stylesheet</b></td>
<td><b>Verify</b></td>
<td><b>Result</b></td>
<td><b>Time to compile</b></td>
<td><b>Iterations</b></td>
<td><b>Total transform time</b></td>
<td><b>Min. parse input</b></td>
<td><b>Avg. parse input</b></td>
<td><b>Max. parse input</b></td>
<td><b>Min. transform</b></td>
<td><b>Avg. transform</b></td>
<td><b>Max. transform</b></td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="testcase">
<tr>
<td colspan='12'> </td>
</tr>
<tr>
<xsl:variable name="ss" select="@stylesheet"/>
<xsl:variable name="baselineTestCase" select="document($baseline)/resultsfile/testfile/testcase[attribute::stylesheet = $ss]"/>
<tr>
<td><xsl:value-of select="@stylesheet"/></td>
<td><xsl:value-of select="@verify"/></td>
<td><xsl:value-of select="@result"/></td>
<td><xsl:value-of select="@compile-xsl"/></td>
<td><xsl:value-of select="@num-iterations"/></td>
<td><xsl:value-of select="@elapsed-time"/></td>
<td><xsl:value-of select="@min-parse-input"/></td>
<td><xsl:value-of select="@avg-parse-input"/></td>
<td><xsl:value-of select="@max-parse-input"/></td>
<td><xsl:value-of select="@min-transform"/></td>
<td><xsl:value-of select="@avg-transform"/></td>
<td><xsl:value-of select="@max-transform"/></td>
</tr>
<td>Baseline</td>
<td><xsl:value-of select="$baselineTestCase/@verify"/></td>
<td><xsl:value-of select="$baselineTestCase/@result"/></td>
<td><xsl:value-of select="$baselineTestCase/@compile-xsl"/></td>
<td><xsl:value-of select="$baselineTestCase/@num-iterations"/></td>
<td><xsl:value-of select="$baselineTestCase/@elapsed-time"/></td>
<td><xsl:value-of select="$baselineTestCase/@min-parse-input"/></td>
<td><xsl:value-of select="$baselineTestCase/@avg-parse-input"/></td>
<td><xsl:value-of select="$baselineTestCase/@max-parse-input"/></td>
<td><xsl:value-of select="$baselineTestCase/@min-transform"/></td>
<td><xsl:value-of select="$baselineTestCase/@avg-transform"/></td>
<td><xsl:value-of select="$baselineTestCase/@max-transform"/></td>
</tr>
<tr>
<xsl:variable name="ss" select="@stylesheet"/>
<xsl:variable name="baselineTestCase" select="document($baseline)/resultsfile/testfile/testcase[attribute::stylesheet = $ss]"/>
<td>Difference:</td>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@verify"/>
<xsl:with-param name="new" select="@verify"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@result"/>
<xsl:with-param name="new" select="@result"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@compile-xsl"/>
<xsl:with-param name="new" select="@compile-xsl"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="new" select="$baselineTestCase/@num-iterations"/>
<xsl:with-param name="orig" select="@num-iterations"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@elapsed-time"/>
<xsl:with-param name="new" select="@elapsed-time"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@min-parse-input"/>
<xsl:with-param name="new" select="@min-parse-input"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@avg-parse-input"/>
<xsl:with-param name="new" select="@avg-parse-input"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@max-parse-input"/>
<xsl:with-param name="new" select="@max-parse-input"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@min-transform"/>
<xsl:with-param name="new" select="@min-transform"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@avg-transform"/>
<xsl:with-param name="new" select="@avg-transform"/>
</xsl:call-template>
<xsl:call-template name="HighlightChange">
<xsl:with-param name="orig" select="$baselineTestCase/@max-transform"/>
<xsl:with-param name="new" select="@max-transform"/>
</xsl:call-template>
</tr>
</xsl:template>
<xsl:template name="HighlightChange">
<xsl:param name="orig"/>
<xsl:param name="new"/>
<xsl:choose>
<xsl:when test="number($orig) or $orig = 0">
<xsl:variable name="n-orig">
<xsl:choose>
<xsl:when test="$orig= 0">
<xsl:value-of select="1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$orig"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="n-new">
<xsl:choose>
<xsl:when test="$new= 0">
<xsl:value-of select="1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$new"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$n-new > $n-orig">
<xsl:variable name="difference" select="(($n-new div $n-orig) - 1) * 100"/>
<xsl:choose>
<xsl:when test="$difference = 0">
<td align="center">--</td>
</xsl:when>
<xsl:when test="$difference > $threshold">
<td bgcolor="red">
<xsl:value-of select="concat($difference,'%')"/>
</td>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:value-of select="concat($difference,'%')"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="difference" select="(1 - ($n-new div $n-orig)) * 100"/>
<xsl:choose>
<xsl:when test="$difference = 0">
<td align="center">--</td>
</xsl:when>
<xsl:when test="$difference > $threshold">
<td bgcolor="#10F0F0">
<xsl:value-of select="concat($difference,'%')"/>
</td>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:value-of select="concat($difference,'%')"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="not($orig) and not($new)">
<td></td>
</xsl:when>
<xsl:when test="$orig = $new">
<td>Same</td>
</xsl:when>
<xsl:otherwise>
<td bgcolor="red">Diff</td>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>