xref: /aosp_15_r20/external/parameter-framework/upstream/tools/coverage/coverage.xsl (revision c33452fb792a5495ec310a9626f2638b053af5dd)
1*c33452fbSAndroid Build Coastguard Worker<?xml version="1.0" encoding="UTF-8"?>
2*c33452fbSAndroid Build Coastguard Worker<xsl:stylesheet
3*c33452fbSAndroid Build Coastguard Worker  version="1.0"
4*c33452fbSAndroid Build Coastguard Worker  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5*c33452fbSAndroid Build Coastguard Worker  >
6*c33452fbSAndroid Build Coastguard Worker  <xsl:output
7*c33452fbSAndroid Build Coastguard Worker    method="xml"
8*c33452fbSAndroid Build Coastguard Worker    omit-xml-declaration="yes"
9*c33452fbSAndroid Build Coastguard Worker    indent="yes"
10*c33452fbSAndroid Build Coastguard Worker    encoding="UTF-8"
11*c33452fbSAndroid Build Coastguard Worker    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
12*c33452fbSAndroid Build Coastguard Worker    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
13*c33452fbSAndroid Build Coastguard Worker    xmlns="http://www.w3.org/1999/xhtml"
14*c33452fbSAndroid Build Coastguard Worker    />
15*c33452fbSAndroid Build Coastguard Worker
16*c33452fbSAndroid Build Coastguard Worker  <xsl:template match="/CoverageReport">
17*c33452fbSAndroid Build Coastguard Worker    <html lang="en" xml:lang="en">
18*c33452fbSAndroid Build Coastguard Worker      <head>
19*c33452fbSAndroid Build Coastguard Worker        <title>Coverage report</title>
20*c33452fbSAndroid Build Coastguard Worker        <style type="text/css">
21*c33452fbSAndroid Build Coastguard Worker          <xsl:text disable-output-escaping="yes">
22*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent.excelent {
23*c33452fbSAndroid Build Coastguard Worker              background-color: green;
24*c33452fbSAndroid Build Coastguard Worker            }
25*c33452fbSAndroid Build Coastguard Worker            #tree .element.good > .name,
26*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent.good,
27*c33452fbSAndroid Build Coastguard Worker            .demo .good {
28*c33452fbSAndroid Build Coastguard Worker              background-color: greenyellow;
29*c33452fbSAndroid Build Coastguard Worker            }
30*c33452fbSAndroid Build Coastguard Worker            #tree .element.nice > .name,
31*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent.nice,
32*c33452fbSAndroid Build Coastguard Worker            .demo .nice {
33*c33452fbSAndroid Build Coastguard Worker              background-color: yellow;
34*c33452fbSAndroid Build Coastguard Worker            }
35*c33452fbSAndroid Build Coastguard Worker            #tree .element.bad > .name,
36*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent.bad,
37*c33452fbSAndroid Build Coastguard Worker            .demo .bad {
38*c33452fbSAndroid Build Coastguard Worker              background-color: orange;
39*c33452fbSAndroid Build Coastguard Worker            }
40*c33452fbSAndroid Build Coastguard Worker            #tree .element.critical > .name,
41*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent.critical,
42*c33452fbSAndroid Build Coastguard Worker            .demo .critical {
43*c33452fbSAndroid Build Coastguard Worker              background-color: orangeRed;
44*c33452fbSAndroid Build Coastguard Worker            }
45*c33452fbSAndroid Build Coastguard Worker            #tree .element input:checked ~ .children {
46*c33452fbSAndroid Build Coastguard Worker              display: block !important;
47*c33452fbSAndroid Build Coastguard Worker            }
48*c33452fbSAndroid Build Coastguard Worker            #tree .element input ~ .children {
49*c33452fbSAndroid Build Coastguard Worker              display: none;
50*c33452fbSAndroid Build Coastguard Worker            }
51*c33452fbSAndroid Build Coastguard Worker
52*c33452fbSAndroid Build Coastguard Worker            table, table td {
53*c33452fbSAndroid Build Coastguard Worker              border-width: 1px;
54*c33452fbSAndroid Build Coastguard Worker              border-style: solid dotted solid dotted;
55*c33452fbSAndroid Build Coastguard Worker              border-color: silver;
56*c33452fbSAndroid Build Coastguard Worker              border-collapse: collapse;
57*c33452fbSAndroid Build Coastguard Worker              padding-left: 0.2em;
58*c33452fbSAndroid Build Coastguard Worker              padding-right: 0.2em;
59*c33452fbSAndroid Build Coastguard Worker            }
60*c33452fbSAndroid Build Coastguard Worker            .progressbar {
61*c33452fbSAndroid Build Coastguard Worker              width: 20em;
62*c33452fbSAndroid Build Coastguard Worker            }
63*c33452fbSAndroid Build Coastguard Worker
64*c33452fbSAndroid Build Coastguard Worker            .progressbar .percent {
65*c33452fbSAndroid Build Coastguard Worker              display: inline-block;
66*c33452fbSAndroid Build Coastguard Worker              height: 0.5em;
67*c33452fbSAndroid Build Coastguard Worker              vertical-align: middle;
68*c33452fbSAndroid Build Coastguard Worker            }
69*c33452fbSAndroid Build Coastguard Worker            div.description:nth-of-type(2n+1) {
70*c33452fbSAndroid Build Coastguard Worker              background-color: whitesmoke;
71*c33452fbSAndroid Build Coastguard Worker            }
72*c33452fbSAndroid Build Coastguard Worker            tr:hover {
73*c33452fbSAndroid Build Coastguard Worker              background-color: lightyellow;
74*c33452fbSAndroid Build Coastguard Worker            }
75*c33452fbSAndroid Build Coastguard Worker          </xsl:text>
76*c33452fbSAndroid Build Coastguard Worker        </style>
77*c33452fbSAndroid Build Coastguard Worker        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
78*c33452fbSAndroid Build Coastguard Worker      </head>
79*c33452fbSAndroid Build Coastguard Worker      <body>
80*c33452fbSAndroid Build Coastguard Worker        <h1>Coverage report</h1>
81*c33452fbSAndroid Build Coastguard Worker        <h2>Summary</h2>
82*c33452fbSAndroid Build Coastguard Worker        <table class="summary">
83*c33452fbSAndroid Build Coastguard Worker          <xsl:apply-templates select=".|*" mode="summary" />
84*c33452fbSAndroid Build Coastguard Worker        </table>
85*c33452fbSAndroid Build Coastguard Worker
86*c33452fbSAndroid Build Coastguard Worker        <h2>Legend</h2>
87*c33452fbSAndroid Build Coastguard Worker          <p>Colors correspond to:</p>
88*c33452fbSAndroid Build Coastguard Worker          <table class="demo">
89*c33452fbSAndroid Build Coastguard Worker            <xsl:call-template name="legend-color">
90*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="coverage">100</xsl:with-param>
91*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="description">Full coverage</xsl:with-param>
92*c33452fbSAndroid Build Coastguard Worker            </xsl:call-template>
93*c33452fbSAndroid Build Coastguard Worker            <xsl:call-template name="legend-color">
94*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="coverage">75</xsl:with-param>
95*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="description">
96*c33452fbSAndroid Build Coastguard Worker                <xsl:text>75%-99% coverage, nice</xsl:text>
97*c33452fbSAndroid Build Coastguard Worker              </xsl:with-param>
98*c33452fbSAndroid Build Coastguard Worker            </xsl:call-template>
99*c33452fbSAndroid Build Coastguard Worker            <xsl:call-template name="legend-color">
100*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="coverage">50</xsl:with-param>
101*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="description">Half the way !</xsl:with-param>
102*c33452fbSAndroid Build Coastguard Worker            </xsl:call-template>
103*c33452fbSAndroid Build Coastguard Worker            <xsl:call-template name="legend-color">
104*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="coverage">0</xsl:with-param>
105*c33452fbSAndroid Build Coastguard Worker              <xsl:with-param name="description">Forgot something ?</xsl:with-param>
106*c33452fbSAndroid Build Coastguard Worker            </xsl:call-template>
107*c33452fbSAndroid Build Coastguard Worker          </table>
108*c33452fbSAndroid Build Coastguard Worker
109*c33452fbSAndroid Build Coastguard Worker        <h2>Tree</h2>
110*c33452fbSAndroid Build Coastguard Worker        <!-- Warning IE conditional comment. A warning is displayed if using IE,
111*c33452fbSAndroid Build Coastguard Worker           as the tree view has been reported not to work on IE7. ("&lt!" ==  "<") -->
112*c33452fbSAndroid Build Coastguard Worker        <xsl:comment>
113*c33452fbSAndroid Build Coastguard Worker          <xsl:text>[if IE]>
114*c33452fbSAndroid Build Coastguard Worker            &lt;span class="warning" style="background-color: red;font-weight:bold;" >
115*c33452fbSAndroid Build Coastguard Worker              This tree representation has been reported not to work on IE.
116*c33452fbSAndroid Build Coastguard Worker              Please use a navigator that respect standards.
117*c33452fbSAndroid Build Coastguard Worker            &lt;/span>
118*c33452fbSAndroid Build Coastguard Worker          &lt;![endif]</xsl:text>
119*c33452fbSAndroid Build Coastguard Worker        </xsl:comment>
120*c33452fbSAndroid Build Coastguard Worker        <p>Check/Uncheck the checkboxes to fold/unfold.</p>
121*c33452fbSAndroid Build Coastguard Worker        <ul class="tree" id="tree">
122*c33452fbSAndroid Build Coastguard Worker          <xsl:apply-templates select="." mode="tree" />
123*c33452fbSAndroid Build Coastguard Worker        </ul>
124*c33452fbSAndroid Build Coastguard Worker
125*c33452fbSAndroid Build Coastguard Worker        <h2>Description</h2>
126*c33452fbSAndroid Build Coastguard Worker        <div class="descriptions">
127*c33452fbSAndroid Build Coastguard Worker          <xsl:apply-templates select=".|descendant::*" mode="description" />
128*c33452fbSAndroid Build Coastguard Worker        </div>
129*c33452fbSAndroid Build Coastguard Worker      </body>
130*c33452fbSAndroid Build Coastguard Worker    </html>
131*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
132*c33452fbSAndroid Build Coastguard Worker
133*c33452fbSAndroid Build Coastguard Worker  <!--##############
134*c33452fbSAndroid Build Coastguard Worker    summary templates
135*c33452fbSAndroid Build Coastguard Worker    ##############-->
136*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="summary" match="*">
137*c33452fbSAndroid Build Coastguard Worker    <tr>
138*c33452fbSAndroid Build Coastguard Worker      <td>
139*c33452fbSAndroid Build Coastguard Worker        <a href="#description-{generate-id(.)}">
140*c33452fbSAndroid Build Coastguard Worker          <xsl:apply-templates select="." mode="summary-name" />
141*c33452fbSAndroid Build Coastguard Worker        </a>
142*c33452fbSAndroid Build Coastguard Worker      </td>
143*c33452fbSAndroid Build Coastguard Worker      <td><xsl:value-of select="@Coverage" /></td>
144*c33452fbSAndroid Build Coastguard Worker      <xsl:apply-templates select="." mode="progress-bar" />
145*c33452fbSAndroid Build Coastguard Worker    </tr>
146*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
147*c33452fbSAndroid Build Coastguard Worker
148*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="summary-name" match="/*" >
149*c33452fbSAndroid Build Coastguard Worker    <xsl:text>Coverage total average</xsl:text>
150*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
151*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="summary-name" match="*">
152*c33452fbSAndroid Build Coastguard Worker    <xsl:value-of select="name()" />
153*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
154*c33452fbSAndroid Build Coastguard Worker
155*c33452fbSAndroid Build Coastguard Worker  <xsl:template name="legend-color">
156*c33452fbSAndroid Build Coastguard Worker    <xsl:param name="coverage" />
157*c33452fbSAndroid Build Coastguard Worker    <xsl:param name="description" />
158*c33452fbSAndroid Build Coastguard Worker    <tr>
159*c33452fbSAndroid Build Coastguard Worker      <td class="coverage">
160*c33452fbSAndroid Build Coastguard Worker        <xsl:attribute name="class">
161*c33452fbSAndroid Build Coastguard Worker          <xsl:call-template name="choose-quality">
162*c33452fbSAndroid Build Coastguard Worker            <xsl:with-param name="coverage">
163*c33452fbSAndroid Build Coastguard Worker              <xsl:value-of select="$coverage" />
164*c33452fbSAndroid Build Coastguard Worker            </xsl:with-param>
165*c33452fbSAndroid Build Coastguard Worker          </xsl:call-template>
166*c33452fbSAndroid Build Coastguard Worker        </xsl:attribute>
167*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="$coverage" />
168*c33452fbSAndroid Build Coastguard Worker      </td>
169*c33452fbSAndroid Build Coastguard Worker      <td class="coverage">
170*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="$description" />
171*c33452fbSAndroid Build Coastguard Worker      </td>
172*c33452fbSAndroid Build Coastguard Worker    </tr>
173*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
174*c33452fbSAndroid Build Coastguard Worker
175*c33452fbSAndroid Build Coastguard Worker  <!-- quality coverage templates -->
176*c33452fbSAndroid Build Coastguard Worker  <xsl:template name="quality">
177*c33452fbSAndroid Build Coastguard Worker    <xsl:call-template name="choose-quality">
178*c33452fbSAndroid Build Coastguard Worker      <xsl:with-param name="coverage">
179*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="number(substring-before(@Coverage,'%'))" />
180*c33452fbSAndroid Build Coastguard Worker      </xsl:with-param>
181*c33452fbSAndroid Build Coastguard Worker    </xsl:call-template>
182*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
183*c33452fbSAndroid Build Coastguard Worker
184*c33452fbSAndroid Build Coastguard Worker  <xsl:template name="choose-quality">
185*c33452fbSAndroid Build Coastguard Worker    <xsl:param name="coverage" />
186*c33452fbSAndroid Build Coastguard Worker    <xsl:choose>
187*c33452fbSAndroid Build Coastguard Worker      <xsl:when test="$coverage >= 100">excelent</xsl:when>
188*c33452fbSAndroid Build Coastguard Worker      <xsl:when test="$coverage >= 75">nice</xsl:when>
189*c33452fbSAndroid Build Coastguard Worker      <xsl:when test="$coverage >= 50">bad</xsl:when>
190*c33452fbSAndroid Build Coastguard Worker      <xsl:when test="$coverage >= 0">critical</xsl:when>
191*c33452fbSAndroid Build Coastguard Worker      <xsl:otherwise />
192*c33452fbSAndroid Build Coastguard Worker    </xsl:choose>
193*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
194*c33452fbSAndroid Build Coastguard Worker
195*c33452fbSAndroid Build Coastguard Worker
196*c33452fbSAndroid Build Coastguard Worker  <!--##############
197*c33452fbSAndroid Build Coastguard Worker    Tree templates
198*c33452fbSAndroid Build Coastguard Worker    ##############-->
199*c33452fbSAndroid Build Coastguard Worker
200*c33452fbSAndroid Build Coastguard Worker  <!-- Ignore the CriterionState nodes and childrens
201*c33452fbSAndroid Build Coastguard Worker     as it add a huge number of unimportant info-->
202*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="tree" match="CriterionStates" />
203*c33452fbSAndroid Build Coastguard Worker
204*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="tree" match="*">
205*c33452fbSAndroid Build Coastguard Worker    <li id="tree-{generate-id(.)}">
206*c33452fbSAndroid Build Coastguard Worker
207*c33452fbSAndroid Build Coastguard Worker      <xsl:attribute name="class">
208*c33452fbSAndroid Build Coastguard Worker        <xsl:text>element </xsl:text>
209*c33452fbSAndroid Build Coastguard Worker        <xsl:call-template name="quality" />
210*c33452fbSAndroid Build Coastguard Worker      </xsl:attribute>
211*c33452fbSAndroid Build Coastguard Worker
212*c33452fbSAndroid Build Coastguard Worker      <xsl:apply-templates select="." mode="tree-checkbox" />
213*c33452fbSAndroid Build Coastguard Worker      <a class="name description" href="#description-{generate-id(.)}">
214*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="@Name" />
215*c33452fbSAndroid Build Coastguard Worker      </a>
216*c33452fbSAndroid Build Coastguard Worker
217*c33452fbSAndroid Build Coastguard Worker      <xsl:if test="node()">
218*c33452fbSAndroid Build Coastguard Worker        <ul class="children"><xsl:apply-templates select="*" mode="tree" /></ul>
219*c33452fbSAndroid Build Coastguard Worker      </xsl:if>
220*c33452fbSAndroid Build Coastguard Worker    </li>
221*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
222*c33452fbSAndroid Build Coastguard Worker
223*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="tree-checkbox" match="ConfigurableDomain | Criterion">
224*c33452fbSAndroid Build Coastguard Worker    <input class="description" type="checkbox" />
225*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
226*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="tree-checkbox" match="Domains | Criteria">
227*c33452fbSAndroid Build Coastguard Worker    <input class="description" type="checkbox" checked="checked" />
228*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
229*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="tree-checkbox" match="*" />
230*c33452fbSAndroid Build Coastguard Worker
231*c33452fbSAndroid Build Coastguard Worker  <!--####################
232*c33452fbSAndroid Build Coastguard Worker    Description templates
233*c33452fbSAndroid Build Coastguard Worker    ####################-->
234*c33452fbSAndroid Build Coastguard Worker  <!-- Ignore the CriterionState nodes and childrens
235*c33452fbSAndroid Build Coastguard Worker     as it add a huge number of unimportant info-->
236*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="description" match="CriterionStates|CriterionStates//*" />
237*c33452fbSAndroid Build Coastguard Worker
238*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="description" match="*">
239*c33452fbSAndroid Build Coastguard Worker    <div class="description">
240*c33452fbSAndroid Build Coastguard Worker      <h3 id="description-{generate-id(.)}">
241*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="@Name" />
242*c33452fbSAndroid Build Coastguard Worker      </h3>
243*c33452fbSAndroid Build Coastguard Worker      <p>
244*c33452fbSAndroid Build Coastguard Worker        <xsl:text>Path:</xsl:text>
245*c33452fbSAndroid Build Coastguard Worker        <xsl:apply-templates select="ancestor::*|." mode="path" />
246*c33452fbSAndroid Build Coastguard Worker      </p>
247*c33452fbSAndroid Build Coastguard Worker      <a class="name" href="#tree-{generate-id(.)}">
248*c33452fbSAndroid Build Coastguard Worker        <xsl:text>Back to tree</xsl:text>
249*c33452fbSAndroid Build Coastguard Worker      </a>
250*c33452fbSAndroid Build Coastguard Worker      <h4>Detail</h4>
251*c33452fbSAndroid Build Coastguard Worker      <table>
252*c33452fbSAndroid Build Coastguard Worker        <xsl:if test="parent::*">
253*c33452fbSAndroid Build Coastguard Worker          <tr>
254*c33452fbSAndroid Build Coastguard Worker            <td>Type</td>
255*c33452fbSAndroid Build Coastguard Worker            <td><xsl:value-of select="name()" /></td>
256*c33452fbSAndroid Build Coastguard Worker          </tr>
257*c33452fbSAndroid Build Coastguard Worker          <tr>
258*c33452fbSAndroid Build Coastguard Worker            <td>Parent</td>
259*c33452fbSAndroid Build Coastguard Worker            <td>
260*c33452fbSAndroid Build Coastguard Worker              <a class="name" href="#description-{generate-id(..)}">
261*c33452fbSAndroid Build Coastguard Worker                <xsl:value-of select="../@Name" />
262*c33452fbSAndroid Build Coastguard Worker              </a>
263*c33452fbSAndroid Build Coastguard Worker              <xsl:text> (</xsl:text>
264*c33452fbSAndroid Build Coastguard Worker              <xsl:value-of select="name(..)" />
265*c33452fbSAndroid Build Coastguard Worker              <xsl:text>)</xsl:text>
266*c33452fbSAndroid Build Coastguard Worker            </td>
267*c33452fbSAndroid Build Coastguard Worker          </tr>
268*c33452fbSAndroid Build Coastguard Worker        </xsl:if>
269*c33452fbSAndroid Build Coastguard Worker        <xsl:apply-templates select="./@*" mode="description" />
270*c33452fbSAndroid Build Coastguard Worker      </table>
271*c33452fbSAndroid Build Coastguard Worker      <xsl:if test="node()">
272*c33452fbSAndroid Build Coastguard Worker        <h4>Children</h4>
273*c33452fbSAndroid Build Coastguard Worker        <table>
274*c33452fbSAndroid Build Coastguard Worker          <tr>
275*c33452fbSAndroid Build Coastguard Worker            <th>Name</th>
276*c33452fbSAndroid Build Coastguard Worker            <th>Type</th>
277*c33452fbSAndroid Build Coastguard Worker            <th>Coverage</th>
278*c33452fbSAndroid Build Coastguard Worker            <th>Nb use</th>
279*c33452fbSAndroid Build Coastguard Worker            <th>Coverage progress bar</th>
280*c33452fbSAndroid Build Coastguard Worker          </tr>
281*c33452fbSAndroid Build Coastguard Worker          <xsl:apply-templates select="*" mode="description-children" />
282*c33452fbSAndroid Build Coastguard Worker        </table>
283*c33452fbSAndroid Build Coastguard Worker      </xsl:if>
284*c33452fbSAndroid Build Coastguard Worker    </div>
285*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
286*c33452fbSAndroid Build Coastguard Worker
287*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="path" match="*">
288*c33452fbSAndroid Build Coastguard Worker    <xsl:text> / </xsl:text>
289*c33452fbSAndroid Build Coastguard Worker    <a href="#description-{generate-id(.)}"><xsl:value-of select="@Name" /></a>
290*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
291*c33452fbSAndroid Build Coastguard Worker
292*c33452fbSAndroid Build Coastguard Worker  <xsl:template match="@*" mode="description">
293*c33452fbSAndroid Build Coastguard Worker    <tr>
294*c33452fbSAndroid Build Coastguard Worker      <td><xsl:value-of select="name()" /></td>
295*c33452fbSAndroid Build Coastguard Worker      <td><xsl:value-of select="." /></td>
296*c33452fbSAndroid Build Coastguard Worker    </tr>
297*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
298*c33452fbSAndroid Build Coastguard Worker
299*c33452fbSAndroid Build Coastguard Worker
300*c33452fbSAndroid Build Coastguard Worker  <!-- Ignore the CriterionState nodes as it add a huge number of unimportant info-->
301*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="description-children" match="CriterionStates" />
302*c33452fbSAndroid Build Coastguard Worker
303*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="description-children" match="*">
304*c33452fbSAndroid Build Coastguard Worker    <tr>
305*c33452fbSAndroid Build Coastguard Worker      <td><a class="name" href="#description-{generate-id(.)}">
306*c33452fbSAndroid Build Coastguard Worker        <xsl:value-of select="@Name" />
307*c33452fbSAndroid Build Coastguard Worker      </a></td>
308*c33452fbSAndroid Build Coastguard Worker      <td><xsl:value-of select="name()" /></td>
309*c33452fbSAndroid Build Coastguard Worker      <xsl:apply-templates select="./@*" mode="description-children" />
310*c33452fbSAndroid Build Coastguard Worker      <xsl:apply-templates select="." mode="progress-bar" />
311*c33452fbSAndroid Build Coastguard Worker    </tr>
312*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
313*c33452fbSAndroid Build Coastguard Worker
314*c33452fbSAndroid Build Coastguard Worker  <xsl:template match="@Name" mode="description-children" />
315*c33452fbSAndroid Build Coastguard Worker  <xsl:template match="@*" mode="description-children">
316*c33452fbSAndroid Build Coastguard Worker    <td><xsl:value-of select="." /></td>
317*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
318*c33452fbSAndroid Build Coastguard Worker
319*c33452fbSAndroid Build Coastguard Worker  <xsl:template mode="progress-bar" match="*">
320*c33452fbSAndroid Build Coastguard Worker    <td class="progressbar">
321*c33452fbSAndroid Build Coastguard Worker      <span style="width:{@Coverage}">
322*c33452fbSAndroid Build Coastguard Worker        <xsl:attribute name="class">
323*c33452fbSAndroid Build Coastguard Worker          <xsl:text>percent </xsl:text>
324*c33452fbSAndroid Build Coastguard Worker          <xsl:call-template name="quality" />
325*c33452fbSAndroid Build Coastguard Worker        </xsl:attribute>
326*c33452fbSAndroid Build Coastguard Worker      </span>
327*c33452fbSAndroid Build Coastguard Worker    </td>
328*c33452fbSAndroid Build Coastguard Worker  </xsl:template>
329*c33452fbSAndroid Build Coastguard Worker</xsl:stylesheet>
330