XLST to HTML File for Transforming NUnit XML Results

    Table of contents
    No headers

     

    <?xml version="1.0" encoding="UTF-8" ?>

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method='html' indent='yes'/>

    <xsl:template match="/">

    <html>

    <xsl:apply-templates/>

    </html>

    </xsl:template>

    <xsl:template match="test-results">

    <head>

    <script type="text/javascript">

    function ShowHideDetails(contentControlId)

    {

    var contentControl = document.getElementById(contentControlId);

    if(contentControl)

    {

    if(contentControl.style.display == 'none')

    {

    contentControl.style.display = '';

    }

    else

    {

    contentControl.style.display = 'none';

    }

    }

    }

    </script>

    </head>

    <body>

    <div id="uxHeader" style="font-weight:bold;">

    Tests run: <xsl:value-of select="@total"/>, Failures: <xsl:value-of select="@failures"/>, Not run: <xsl:value-of select="@not-run"/>, Time: <xsl:value-of select="test-suite/@time"/> seconds

    </div>

    <xsl:if test="//test-case[@success = 'False']">

    <div style="font-weight:bold;margin-top:10px;border-top:1px solid black;font-size:14pt;">

    Failed Tests

    </div>

    <xsl:for-each select="//test-suite">

    <xsl:if test="results/test-case[@success = 'False']">

    <div style="margin-top:5px;font-weight:bold;"><xsl:value-of select="@name" /></div>

    <div style="margin-left:10px;">

    <xsl:call-template name="failureTemplate"></xsl:call-template>

    </div>

    </xsl:if>

    </xsl:for-each>

    </xsl:if>


    <xsl:if test="//test-case[@executed = 'False']">

    <div style="font-weight:bold;margin-top:10px;border-top:1px solid black;font-size:14pt;">

    Ignored Tests

    </div>

    <xsl:for-each select="//test-suite">

    <xsl:if test="results/test-case[@executed = 'False']">

    <div style="margin-top:5px;font-weight:bold;"><xsl:value-of select="@name" /></div>

    <div style="margin-left:10px;">

    <xsl:call-template name="ignoreTemplate"></xsl:call-template>

    </div>

    </xsl:if>

    </xsl:for-each>

    </xsl:if>

    <div style="font-weight:bold;margin-top:10px;border-top:1px solid black;font-size:14pt;">

    Successful Tests

    </div>

    <xsl:for-each select="//test-suite">

    <xsl:if test="results/test-case[@success = 'True']">

    <div style="margin-top:5px;font-weight:bold;"><xsl:value-of select="@name" /></div>

    <div style="margin-left:10px;">

    <xsl:call-template name="passTemplate"></xsl:call-template>

    </div>

    </xsl:if>

    </xsl:for-each>

    </body>

    </xsl:template>

    <xsl:template match="results/test-case[failure]" name="failureTemplate">

    <xsl:for-each select="results/test-case[@success = 'False']">

    <span style="font-weight:bold;font-size:12pt;">

    <xsl:value-of select="position()"/>)

    </span>

    <xsl:value-of select="@name"/>

    <div style="font-size:10pt;margin-left:25px;">Reason:

    <xsl:choose><xsl:when test="string-length(child::node()/message)=0"> [not defined]</xsl:when>

    <xsl:otherwise> "<xsl:value-of select="child::node()/message"/>"</xsl:otherwise>

    </xsl:choose>

    </div>

    </xsl:for-each>

    </xsl:template>

    <xsl:template match="results/test-case[reason]" name="ignoreTemplate">

    <xsl:for-each select="results/test-case[@executed = 'False']">

    <span style="font-weight:bold;font-size:12pt;">

    <xsl:value-of select="position()"/>)

    </span>

    <xsl:value-of select="@name"/>

    <div style="font-size:10pt;margin-left:25px;">Reason:

    <xsl:choose><xsl:when test="string-length(child::node()/message)=0"> Ignored </xsl:when>

    <xsl:otherwise> "<xsl:value-of select="child::node()/message"/>"</xsl:otherwise>

    </xsl:choose>

    </div>

    </xsl:for-each>

    </xsl:template>

    <xsl:template match="results[test-case]" name="passTemplate">

    <xsl:for-each select="results/test-case[@success = 'True']">

    <span style="font-weight:bold;font-size:12pt;">

    <xsl:value-of select="position()"/>)

    </span>

    <xsl:value-of select="@name"/>

    <div style="font-size:10pt;margin-left:25px;">Reported: Success

    </div>
    <xsl:text></xsl:text>

    </xsl:for-each>

    </xsl:template>

    <xsl:template name="Newline"><xsl:text>
    </xsl:text></xsl:template>

    </xsl:stylesheet>

    Tag page
    You must login to post a comment.

    Copyright © 2011 MindTouch, Inc. Powered by