xref: /aosp_15_r20/external/jacoco/org.jacoco.doc/xsl/junit-noframes.xsl (revision 7e63c1270baf9bfa84f5b6aecf17bd0c1a75af94)
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>&#160;<xsl:value-of select="$qualified.bundle.version"/></span>
73*7e63c127SSorin Basca				<a href="../doc/license.html">Copyright</a> &#169; <xsl:value-of select="$copyright.years"/> Mountainminds GmbH &amp; 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 &gt; 0">Failure</xsl:when>
105*7e63c127SSorin Basca                            <xsl:when test="$errorCount &gt; 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 &gt; 0">Failure</xsl:when>
199*7e63c127SSorin Basca						<xsl:when test="$errorCount &gt; 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> &gt;
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[.&gt; 0]">Failure</xsl:when>
277*7e63c127SSorin Basca                <xsl:when test="@errors[.&gt; 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),&quot;'&quot;,&quot;\&apos;&quot;)"/>
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),"&#xA;","&lt;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