Create the New Custom Report

As described in our blog on custom reporting, create a new custom report called "Release Notes Report". Choose the following information for it:

  • Formats = HTML, MS-Word 2003, MS-Word 2007+
  • Category = Requirement Reports

You can add a custom Header or Footer to the report as makes sense for your organization (e.g. an introduction and/or copyright notice)

Then we will be adding the following sections to the report:

We shall be adding each section in turn below:

Project Overview

For this standard section, you can leave the Footer and Header empty and enter the following XML template into the Template section:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/ProjectData/Project">
    <div class="Title1">Project <xsl:value-of select="ProjectId"/>: <xsl:value-of select="Name"/></div>
    <p>
      <xsl:value-of select="Description" disable-output-escaping="yes"/>
    </p>
  </xsl:template>
</xsl:stylesheet>

Requirements List

For this standard section, you can leave the Footer empty, but enter the following Text into the Header:

The following new features have been added in this release:

Now, enter the following XML template into the Template section:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/RequirementData">
    <ul>
      <xsl:for-each select="Requirement">
        <li>
          <xsl:if test="IsSummary = 'True'">
            <b>
              <xsl:value-of select="Name"/>
            </b>
            </xsl:if>
          <xsl:if test="IsSummary = 'False'">
            <xsl:value-of select="Name"/> -
            [RQ:<xsl:value-of select="RequirementId"/>]
          </xsl:if>
        </li>
      </xsl:for-each>
    </ul>
  </xsl:template>
  </xsl:stylesheet>

Incident List

For this standard section, you can leave the Footer empty, but enter the following Text into the Header:

The following issues and enhancements have been addressed in this release:

Now, enter the following XML template into the Template section:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/IncidentData">
    <ul>
      <xsl:for-each select="Incident">
        <li><xsl:value-of select="Name"/> -
            [IN:<xsl:value-of select="IncidentId"/>]</li>
      </xsl:for-each>
    </ul>
  </xsl:template>
  </xsl:stylesheet>

Final Product

Finally, save the report and to view the finished report, execute the report and choose these filters:

  • Requirements List
    • Status = Developed, Tested, Completed
    • Release = (chosen Release)
  • Incidents List
    • Status = (All Closed)
    • Resolved Release = (chosen Release)

The finished output will look something like: