1*7e63c127SSorin Basca<?xml version="1.0"?> 2*7e63c127SSorin Basca<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 3*7e63c127SSorin Basca xmlns="http://www.w3.org/1999/xhtml" 4*7e63c127SSorin Basca xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils" 5*7e63c127SSorin Basca exclude-result-prefixes="stringutils"> 6*7e63c127SSorin Basca<xsl:output method="xml" indent="yes" encoding="UTF-8" 7*7e63c127SSorin Basca doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 8*7e63c127SSorin Basca doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> 9*7e63c127SSorin Basca<xsl:decimal-format decimal-separator="." grouping-separator="," /> 10*7e63c127SSorin Basca<!-- 11*7e63c127SSorin Basca Licensed to the Apache Software Foundation (ASF) under one or more 12*7e63c127SSorin Basca contributor license agreements. See the NOTICE file distributed with 13*7e63c127SSorin Basca this work for additional information regarding copyright ownership. 14*7e63c127SSorin Basca The ASF licenses this file to You under the Apache License, Version 2.0 15*7e63c127SSorin Basca (the "License"); you may not use this file except in compliance with 16*7e63c127SSorin Basca the License. You may obtain a copy of the License at 17*7e63c127SSorin Basca 18*7e63c127SSorin Basca http://www.apache.org/licenses/LICENSE-2.0 19*7e63c127SSorin Basca 20*7e63c127SSorin Basca Unless required by applicable law or agreed to in writing, software 21*7e63c127SSorin Basca distributed under the License is distributed on an "AS IS" BASIS, 22*7e63c127SSorin Basca WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 23*7e63c127SSorin Basca See the License for the specific language governing permissions and 24*7e63c127SSorin Basca limitations under the License. 25*7e63c127SSorin Basca --> 26*7e63c127SSorin Basca 27*7e63c127SSorin Basca<xsl:param name="qualified.bundle.version"/> 28*7e63c127SSorin Basca<xsl:param name="jacoco.home.url"/> 29*7e63c127SSorin Basca<xsl:param name="copyright.years"/> 30*7e63c127SSorin Basca 31*7e63c127SSorin Basca<!-- 32*7e63c127SSorin Basca 33*7e63c127SSorin Basca JaCoCo test report stylesheet. 34*7e63c127SSorin Basca 35*7e63c127SSorin Basca--> 36*7e63c127SSorin Basca<xsl:template match="testsuites"> 37*7e63c127SSorin Basca <html> 38*7e63c127SSorin Basca <head> 39*7e63c127SSorin Basca <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 40*7e63c127SSorin Basca <link rel="stylesheet" href="../doc/resources/doc.css" charset="UTF-8" type="text/css" /> 41*7e63c127SSorin Basca <link rel="shortcut icon" href="../doc/resources/report.gif" type="image/gif" /> 42*7e63c127SSorin Basca <title>JaCoCo - JUnit Test Results</title> 43*7e63c127SSorin Basca 44*7e63c127SSorin Basca <style type="text/css"> 45*7e63c127SSorin Basca .Error { 46*7e63c127SSorin Basca font-weight:bold; color:red; 47*7e63c127SSorin Basca } 48*7e63c127SSorin Basca .Failure { 49*7e63c127SSorin Basca font-weight:bold; color:purple; 50*7e63c127SSorin Basca } 51*7e63c127SSorin Basca </style> 52*7e63c127SSorin Basca </head> 53*7e63c127SSorin Basca <body> 54*7e63c127SSorin Basca <div id="content"> 55*7e63c127SSorin Basca <a name="top"></a> 56*7e63c127SSorin Basca <xsl:call-template name="pageHeader"/> 57*7e63c127SSorin Basca 58*7e63c127SSorin Basca <!-- Summary part --> 59*7e63c127SSorin Basca <xsl:call-template name="summary"/> 60*7e63c127SSorin Basca 61*7e63c127SSorin Basca <!-- Package List part --> 62*7e63c127SSorin Basca <xsl:call-template name="packagelist"/> 63*7e63c127SSorin Basca 64*7e63c127SSorin Basca <!-- For each package create its part --> 65*7e63c127SSorin Basca <xsl:call-template name="packages"/> 66*7e63c127SSorin Basca 67*7e63c127SSorin Basca <!-- For each class create the part --> 68*7e63c127SSorin Basca <xsl:call-template name="classes"/> 69*7e63c127SSorin Basca 70*7e63c127SSorin Basca </div> 71*7e63c127SSorin Basca <div class="footer"> 72*7e63c127SSorin Basca <span class="right"><a href="{$jacoco.home.url}">JaCoCo</a> <xsl:value-of select="$qualified.bundle.version"/></span> 73*7e63c127SSorin Basca <a href="../doc/license.html">Copyright</a> © <xsl:value-of select="$copyright.years"/> Mountainminds GmbH & Co. KG and Contributors 74*7e63c127SSorin Basca </div> 75*7e63c127SSorin Basca </body> 76*7e63c127SSorin Basca </html> 77*7e63c127SSorin Basca</xsl:template> 78*7e63c127SSorin Basca 79*7e63c127SSorin Basca 80*7e63c127SSorin Basca 81*7e63c127SSorin Basca<!-- ================================================================== --> 82*7e63c127SSorin Basca<!-- Write a list of all packages with an hyperlink to the anchor of --> 83*7e63c127SSorin Basca<!-- of the package name. --> 84*7e63c127SSorin Basca<!-- ================================================================== --> 85*7e63c127SSorin Basca<xsl:template name="packagelist"> 86*7e63c127SSorin Basca <h2>Packages</h2> 87*7e63c127SSorin Basca <table class="coverage"> 88*7e63c127SSorin Basca <xsl:call-template name="testsuite.test.header"/> 89*7e63c127SSorin Basca <tbody> 90*7e63c127SSorin Basca <!-- list all packages recursively --> 91*7e63c127SSorin Basca <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]"> 92*7e63c127SSorin Basca <xsl:sort select="@package"/> 93*7e63c127SSorin Basca <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/> 94*7e63c127SSorin Basca <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/> 95*7e63c127SSorin Basca <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/> 96*7e63c127SSorin Basca <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/> 97*7e63c127SSorin Basca <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/> 98*7e63c127SSorin Basca 99*7e63c127SSorin Basca <!-- write a summary for the package --> 100*7e63c127SSorin Basca <tr valign="top"> 101*7e63c127SSorin Basca <!-- set a nice color depending if there is an error/failure --> 102*7e63c127SSorin Basca <xsl:attribute name="class"> 103*7e63c127SSorin Basca <xsl:choose> 104*7e63c127SSorin Basca <xsl:when test="$failureCount > 0">Failure</xsl:when> 105*7e63c127SSorin Basca <xsl:when test="$errorCount > 0">Error</xsl:when> 106*7e63c127SSorin Basca </xsl:choose> 107*7e63c127SSorin Basca </xsl:attribute> 108*7e63c127SSorin Basca <td style="width:24em"><a href="#{@package}" class="el_testsuite"><xsl:value-of select="@package"/></a></td> 109*7e63c127SSorin Basca <td><xsl:value-of select="$testCount"/></td> 110*7e63c127SSorin Basca <td><xsl:value-of select="$errorCount"/></td> 111*7e63c127SSorin Basca <td><xsl:value-of select="$failureCount"/></td> 112*7e63c127SSorin Basca <td> 113*7e63c127SSorin Basca <xsl:call-template name="display-time"> 114*7e63c127SSorin Basca <xsl:with-param name="value" select="$timeCount"/> 115*7e63c127SSorin Basca </xsl:call-template> 116*7e63c127SSorin Basca </td> 117*7e63c127SSorin Basca </tr> 118*7e63c127SSorin Basca </xsl:for-each> 119*7e63c127SSorin Basca </tbody> 120*7e63c127SSorin Basca </table> 121*7e63c127SSorin Basca <p class="hint"> 122*7e63c127SSorin Basca Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers. 123*7e63c127SSorin Basca </p> 124*7e63c127SSorin Basca</xsl:template> 125*7e63c127SSorin Basca 126*7e63c127SSorin Basca 127*7e63c127SSorin Basca <!-- ================================================================== --> 128*7e63c127SSorin Basca <!-- Write a package level report --> 129*7e63c127SSorin Basca <!-- It creates a table with values from the document: --> 130*7e63c127SSorin Basca <!-- Name | Tests | Errors | Failures | Time --> 131*7e63c127SSorin Basca <!-- ================================================================== --> 132*7e63c127SSorin Basca <xsl:template name="packages"> 133*7e63c127SSorin Basca <!-- create an anchor to this package name --> 134*7e63c127SSorin Basca <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]"> 135*7e63c127SSorin Basca <xsl:sort select="@package"/> 136*7e63c127SSorin Basca <a name="{@package}"></a> 137*7e63c127SSorin Basca <h3>Package <xsl:value-of select="@package"/></h3> 138*7e63c127SSorin Basca 139*7e63c127SSorin Basca <table class="coverage"> 140*7e63c127SSorin Basca <xsl:call-template name="testsuite.test.header"/> 141*7e63c127SSorin Basca 142*7e63c127SSorin Basca <!-- match the testsuites of this package --> 143*7e63c127SSorin Basca <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/> 144*7e63c127SSorin Basca </table> 145*7e63c127SSorin Basca <p> 146*7e63c127SSorin Basca <a href="#top">Back to top</a> 147*7e63c127SSorin Basca </p> 148*7e63c127SSorin Basca </xsl:for-each> 149*7e63c127SSorin Basca </xsl:template> 150*7e63c127SSorin Basca 151*7e63c127SSorin Basca <xsl:template name="classes"> 152*7e63c127SSorin Basca <xsl:for-each select="testsuite"> 153*7e63c127SSorin Basca <xsl:sort select="@name"/> 154*7e63c127SSorin Basca <!-- create an anchor to this class name --> 155*7e63c127SSorin Basca <a name="{@name}"></a> 156*7e63c127SSorin Basca <h3>TestCase <xsl:value-of select="@name"/></h3> 157*7e63c127SSorin Basca 158*7e63c127SSorin Basca <table class="coverage"> 159*7e63c127SSorin Basca <xsl:call-template name="testcase.test.header"/> 160*7e63c127SSorin Basca <!-- 161*7e63c127SSorin Basca test can even not be started at all (failure to load the class) 162*7e63c127SSorin Basca so report the error directly 163*7e63c127SSorin Basca --> 164*7e63c127SSorin Basca <xsl:if test="./error"> 165*7e63c127SSorin Basca <tr class="Error"> 166*7e63c127SSorin Basca <td colspan="4"><xsl:apply-templates select="./error"/></td> 167*7e63c127SSorin Basca </tr> 168*7e63c127SSorin Basca </xsl:if> 169*7e63c127SSorin Basca <xsl:apply-templates select="./testcase" mode="print.test"/> 170*7e63c127SSorin Basca </table> 171*7e63c127SSorin Basca <p> 172*7e63c127SSorin Basca <a href="#top">Back to top</a> 173*7e63c127SSorin Basca </p> 174*7e63c127SSorin Basca </xsl:for-each> 175*7e63c127SSorin Basca </xsl:template> 176*7e63c127SSorin Basca 177*7e63c127SSorin Basca<xsl:template name="summary"> 178*7e63c127SSorin Basca <h2>Summary</h2> 179*7e63c127SSorin Basca <xsl:variable name="testCount" select="sum(testsuite/@tests)"/> 180*7e63c127SSorin Basca <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/> 181*7e63c127SSorin Basca <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/> 182*7e63c127SSorin Basca <xsl:variable name="timeCount" select="sum(testsuite/@time)"/> 183*7e63c127SSorin Basca <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/> 184*7e63c127SSorin Basca <table class="coverage"> 185*7e63c127SSorin Basca <thead> 186*7e63c127SSorin Basca <tr valign="top"> 187*7e63c127SSorin Basca <td>Tests</td> 188*7e63c127SSorin Basca <td>Failures</td> 189*7e63c127SSorin Basca <td>Errors</td> 190*7e63c127SSorin Basca <td>Success rate</td> 191*7e63c127SSorin Basca <td>Time</td> 192*7e63c127SSorin Basca </tr> 193*7e63c127SSorin Basca </thead> 194*7e63c127SSorin Basca <tbody> 195*7e63c127SSorin Basca <tr valign="top"> 196*7e63c127SSorin Basca <xsl:attribute name="class"> 197*7e63c127SSorin Basca <xsl:choose> 198*7e63c127SSorin Basca <xsl:when test="$failureCount > 0">Failure</xsl:when> 199*7e63c127SSorin Basca <xsl:when test="$errorCount > 0">Error</xsl:when> 200*7e63c127SSorin Basca </xsl:choose> 201*7e63c127SSorin Basca </xsl:attribute> 202*7e63c127SSorin Basca <td><xsl:value-of select="$testCount"/></td> 203*7e63c127SSorin Basca <td><xsl:value-of select="$failureCount"/></td> 204*7e63c127SSorin Basca <td><xsl:value-of select="$errorCount"/></td> 205*7e63c127SSorin Basca <td> 206*7e63c127SSorin Basca <xsl:call-template name="display-percent"> 207*7e63c127SSorin Basca <xsl:with-param name="value" select="$successRate"/> 208*7e63c127SSorin Basca </xsl:call-template> 209*7e63c127SSorin Basca </td> 210*7e63c127SSorin Basca <td> 211*7e63c127SSorin Basca <xsl:call-template name="display-time"> 212*7e63c127SSorin Basca <xsl:with-param name="value" select="$timeCount"/> 213*7e63c127SSorin Basca </xsl:call-template> 214*7e63c127SSorin Basca </td> 215*7e63c127SSorin Basca </tr> 216*7e63c127SSorin Basca </tbody> 217*7e63c127SSorin Basca </table> 218*7e63c127SSorin Basca <p class="hint"> 219*7e63c127SSorin Basca Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated. 220*7e63c127SSorin Basca </p> 221*7e63c127SSorin Basca</xsl:template> 222*7e63c127SSorin Basca 223*7e63c127SSorin Basca<!-- Page HEADER --> 224*7e63c127SSorin Basca<xsl:template name="pageHeader"> 225*7e63c127SSorin Basca <div class="breadcrumb"> 226*7e63c127SSorin Basca <a href="../index.html" class="el_report">JaCoCo</a> > 227*7e63c127SSorin Basca <span class="el_testsuite">JUnit Test Results</span> 228*7e63c127SSorin Basca </div> 229*7e63c127SSorin Basca <h1>JUnit Test Results</h1> 230*7e63c127SSorin Basca</xsl:template> 231*7e63c127SSorin Basca 232*7e63c127SSorin Basca<xsl:template match="testsuite" mode="header"> 233*7e63c127SSorin Basca <thead> 234*7e63c127SSorin Basca <tr valign="top"> 235*7e63c127SSorin Basca <td>Name</td> 236*7e63c127SSorin Basca <td>Tests</td> 237*7e63c127SSorin Basca <td>Errors</td> 238*7e63c127SSorin Basca <td>Failures</td> 239*7e63c127SSorin Basca <td nowrap="nowrap">Time(s)</td> 240*7e63c127SSorin Basca </tr> 241*7e63c127SSorin Basca </thead> 242*7e63c127SSorin Basca</xsl:template> 243*7e63c127SSorin Basca 244*7e63c127SSorin Basca<!-- class header --> 245*7e63c127SSorin Basca<xsl:template name="testsuite.test.header"> 246*7e63c127SSorin Basca <thead> 247*7e63c127SSorin Basca <tr> 248*7e63c127SSorin Basca <td>Name</td> 249*7e63c127SSorin Basca <td>Tests</td> 250*7e63c127SSorin Basca <td>Errors</td> 251*7e63c127SSorin Basca <td>Failures</td> 252*7e63c127SSorin Basca <td>Time(s)</td> 253*7e63c127SSorin Basca </tr> 254*7e63c127SSorin Basca </thead> 255*7e63c127SSorin Basca</xsl:template> 256*7e63c127SSorin Basca 257*7e63c127SSorin Basca<!-- method header --> 258*7e63c127SSorin Basca<xsl:template name="testcase.test.header"> 259*7e63c127SSorin Basca <thead> 260*7e63c127SSorin Basca <tr> 261*7e63c127SSorin Basca <td>Name</td> 262*7e63c127SSorin Basca <td>Status</td> 263*7e63c127SSorin Basca <td>Type</td> 264*7e63c127SSorin Basca <td>Time(s)</td> 265*7e63c127SSorin Basca </tr> 266*7e63c127SSorin Basca </thead> 267*7e63c127SSorin Basca</xsl:template> 268*7e63c127SSorin Basca 269*7e63c127SSorin Basca 270*7e63c127SSorin Basca<!-- class information --> 271*7e63c127SSorin Basca<xsl:template match="testsuite" mode="print.test"> 272*7e63c127SSorin Basca <tr valign="top"> 273*7e63c127SSorin Basca <!-- set a nice color depending if there is an error/failure --> 274*7e63c127SSorin Basca <xsl:attribute name="class"> 275*7e63c127SSorin Basca <xsl:choose> 276*7e63c127SSorin Basca <xsl:when test="@failures[.> 0]">Failure</xsl:when> 277*7e63c127SSorin Basca <xsl:when test="@errors[.> 0]">Error</xsl:when> 278*7e63c127SSorin Basca </xsl:choose> 279*7e63c127SSorin Basca </xsl:attribute> 280*7e63c127SSorin Basca 281*7e63c127SSorin Basca <!-- print testsuite information --> 282*7e63c127SSorin Basca <td style="width:24em"><a href="#{@name}" class="el_testsuite"><xsl:value-of select="@name"/></a></td> 283*7e63c127SSorin Basca <td><xsl:value-of select="@tests"/></td> 284*7e63c127SSorin Basca <td><xsl:value-of select="@errors"/></td> 285*7e63c127SSorin Basca <td><xsl:value-of select="@failures"/></td> 286*7e63c127SSorin Basca <td> 287*7e63c127SSorin Basca <xsl:call-template name="display-time"> 288*7e63c127SSorin Basca <xsl:with-param name="value" select="@time"/> 289*7e63c127SSorin Basca </xsl:call-template> 290*7e63c127SSorin Basca </td> 291*7e63c127SSorin Basca </tr> 292*7e63c127SSorin Basca</xsl:template> 293*7e63c127SSorin Basca 294*7e63c127SSorin Basca<xsl:template match="testcase" mode="print.test"> 295*7e63c127SSorin Basca <tr valign="top"> 296*7e63c127SSorin Basca <xsl:attribute name="class"> 297*7e63c127SSorin Basca <xsl:choose> 298*7e63c127SSorin Basca <xsl:when test="failure | error">Error</xsl:when> 299*7e63c127SSorin Basca </xsl:choose> 300*7e63c127SSorin Basca </xsl:attribute> 301*7e63c127SSorin Basca <td style="width:24em"><span class="el_test"><xsl:value-of select="@name"/></span></td> 302*7e63c127SSorin Basca <xsl:choose> 303*7e63c127SSorin Basca <xsl:when test="failure"> 304*7e63c127SSorin Basca <td>Failure</td> 305*7e63c127SSorin Basca <td><xsl:apply-templates select="failure"/></td> 306*7e63c127SSorin Basca </xsl:when> 307*7e63c127SSorin Basca <xsl:when test="error"> 308*7e63c127SSorin Basca <td>Error</td> 309*7e63c127SSorin Basca <td><xsl:apply-templates select="error"/></td> 310*7e63c127SSorin Basca </xsl:when> 311*7e63c127SSorin Basca <xsl:otherwise> 312*7e63c127SSorin Basca <td>Success</td> 313*7e63c127SSorin Basca <td></td> 314*7e63c127SSorin Basca </xsl:otherwise> 315*7e63c127SSorin Basca </xsl:choose> 316*7e63c127SSorin Basca <td> 317*7e63c127SSorin Basca <xsl:call-template name="display-time"> 318*7e63c127SSorin Basca <xsl:with-param name="value" select="@time"/> 319*7e63c127SSorin Basca </xsl:call-template> 320*7e63c127SSorin Basca </td> 321*7e63c127SSorin Basca </tr> 322*7e63c127SSorin Basca</xsl:template> 323*7e63c127SSorin Basca 324*7e63c127SSorin Basca 325*7e63c127SSorin Basca<xsl:template match="failure"> 326*7e63c127SSorin Basca <xsl:call-template name="display-failures"/> 327*7e63c127SSorin Basca</xsl:template> 328*7e63c127SSorin Basca 329*7e63c127SSorin Basca<xsl:template match="error"> 330*7e63c127SSorin Basca <xsl:call-template name="display-failures"/> 331*7e63c127SSorin Basca</xsl:template> 332*7e63c127SSorin Basca 333*7e63c127SSorin Basca<!-- Style for the error and failure in the tescase template --> 334*7e63c127SSorin Basca<xsl:template name="display-failures"> 335*7e63c127SSorin Basca <xsl:choose> 336*7e63c127SSorin Basca <xsl:when test="not(@message)">N/A</xsl:when> 337*7e63c127SSorin Basca <xsl:otherwise> 338*7e63c127SSorin Basca <xsl:value-of select="@message"/> 339*7e63c127SSorin Basca </xsl:otherwise> 340*7e63c127SSorin Basca </xsl:choose> 341*7e63c127SSorin Basca <!-- display the stacktrace --> 342*7e63c127SSorin Basca <code> 343*7e63c127SSorin Basca <br/><br/> 344*7e63c127SSorin Basca <xsl:call-template name="br-replace"> 345*7e63c127SSorin Basca <xsl:with-param name="word" select="."/> 346*7e63c127SSorin Basca </xsl:call-template> 347*7e63c127SSorin Basca </code> 348*7e63c127SSorin Basca <!-- the later is better but might be problematic for non-21" monitors... --> 349*7e63c127SSorin Basca <!--pre><xsl:value-of select="."/></pre--> 350*7e63c127SSorin Basca</xsl:template> 351*7e63c127SSorin Basca 352*7e63c127SSorin Basca<xsl:template name="JS-escape"> 353*7e63c127SSorin Basca <xsl:param name="string"/> 354*7e63c127SSorin Basca <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/> 355*7e63c127SSorin Basca <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/> 356*7e63c127SSorin Basca <xsl:value-of select="$tmp2"/> 357*7e63c127SSorin Basca</xsl:template> 358*7e63c127SSorin Basca 359*7e63c127SSorin Basca 360*7e63c127SSorin Basca<!-- 361*7e63c127SSorin Basca template that will convert a carriage return into a br tag 362*7e63c127SSorin Basca @param word the text from which to convert CR to BR tag 363*7e63c127SSorin Basca--> 364*7e63c127SSorin Basca<xsl:template name="br-replace"> 365*7e63c127SSorin Basca <xsl:param name="word"/> 366*7e63c127SSorin Basca <xsl:value-of disable-output-escaping="yes" select='stringutils:replace(string($word),"
","<br/>")'/> 367*7e63c127SSorin Basca</xsl:template> 368*7e63c127SSorin Basca 369*7e63c127SSorin Basca<xsl:template name="display-time"> 370*7e63c127SSorin Basca <xsl:param name="value"/> 371*7e63c127SSorin Basca <xsl:value-of select="format-number($value,'0.000')"/> 372*7e63c127SSorin Basca</xsl:template> 373*7e63c127SSorin Basca 374*7e63c127SSorin Basca<xsl:template name="display-percent"> 375*7e63c127SSorin Basca <xsl:param name="value"/> 376*7e63c127SSorin Basca <xsl:value-of select="format-number($value,'0.00%')"/> 377*7e63c127SSorin Basca</xsl:template> 378*7e63c127SSorin Basca 379*7e63c127SSorin Basca</xsl:stylesheet> 380