Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6803 buildadm 1
<?xml version="1.0"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
3
    xmlns:lxslt="http://xml.apache.org/xslt"
4
    xmlns:redirect="http://xml.apache.org/xalan/redirect"
5
    extension-element-prefixes="redirect">
6
 
7
<!--
8
   Licensed to the Apache Software Foundation (ASF) under one or more
9
   contributor license agreements.  See the NOTICE file distributed with
10
   this work for additional information regarding copyright ownership.
11
   The ASF licenses this file to You under the Apache License, Version 2.0
12
   (the "License"); you may not use this file except in compliance with
13
   the License.  You may obtain a copy of the License at
14
 
15
       http://www.apache.org/licenses/LICENSE-2.0
16
 
17
   Unless required by applicable law or agreed to in writing, software
18
   distributed under the License is distributed on an "AS IS" BASIS,
19
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
   See the License for the specific language governing permissions and
21
   limitations under the License.
22
-->
23
 
24
    <xsl:output method="html" indent="yes" encoding="US-ASCII"/>
25
    <xsl:decimal-format decimal-separator="." grouping-separator="," />
26
 
27
    <xsl:param name="output.dir" select="'.'"/>
28
    <xsl:param name="basedir" select="'.'"/>
29
 
30
    <xsl:template match="checkstyle">
31
        <!-- create the index.html -->
32
        <redirect:write file="{$output.dir}/index.html">
33
            <xsl:call-template name="index.html"/>
34
        </redirect:write>
35
 
36
        <!-- create the stylesheet.css -->
37
        <redirect:write file="{$output.dir}/stylesheet.css">
38
            <xsl:call-template name="stylesheet.css"/>
39
        </redirect:write>
40
 
41
        <!-- create the overview-summary.html at the root -->
42
        <redirect:write file="{$output.dir}/overview-frame.html">
43
            <xsl:apply-templates select="." mode="overview"/>
44
        </redirect:write>
45
 
46
        <!-- create the all-classes.html at the root -->
47
        <redirect:write file="{$output.dir}/allclasses-frame.html">
48
            <xsl:apply-templates select="." mode="all.classes"/>
49
        </redirect:write>
50
 
51
        <!-- process all files -->
52
        <xsl:apply-templates select="file[count(error) != 0]"/>
53
    </xsl:template>
54
 
55
    <xsl:template name="index.html">
56
        <html>
57
            <head>
58
                <title>CheckStyle Audit</title>
59
            </head>
60
            <frameset cols="20%,80%">
61
                <frame src="allclasses-frame.html" name="fileListFrame"/>
62
                <frame src="overview-frame.html" name="fileFrame"/>
63
            </frameset>
64
            <noframes>
65
                <h2>Frame Alert</h2>
66
                <p>
67
                    This document is designed to be viewed using the frames feature.
68
                    If you see this message, you are using a non-frame-capable web client.
69
                </p>
70
            </noframes>
71
        </html>
72
    </xsl:template>
73
 
74
    <xsl:template name="pageHeader">
75
        <table border="0" cellpadding="0" cellspacing="0" width="100%">
76
            <tr>
77
                <td class="text-align:right"><h2>CheckStyle Audit</h2></td>
78
            </tr>
79
            <tr>
80
                <td class="text-align:right">Designed for use with
81
                  <a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
82
                  <a href='http://ant.apache.org/'>Ant</a>.</td>
83
            </tr>
84
        </table>
85
        <hr size="1"/>
86
    </xsl:template>
87
 
88
    <xsl:template match="checkstyle" mode="overview">
89
        <html>
90
            <head>
91
                <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
92
            </head>
93
            <body>
94
                <!-- page header -->
95
                <xsl:call-template name="pageHeader"/>
96
 
97
                <!-- Summary part -->
98
                <xsl:apply-templates select="." mode="summary"/>
99
                <hr size="1" width="100%" align="left"/>
100
 
101
                <!-- File list part -->
102
                <xsl:apply-templates select="." mode="filelist"/>
103
            </body>
104
        </html>
105
    </xsl:template>
106
 
107
    <xsl:template name="stylesheet.css">
108
        .bannercell {
109
        border: 0px;
110
        padding: 0px;
111
        }
112
        body {
113
        margin-left: 10;
114
        margin-right: 10;
115
        font:normal 80% arial,helvetica,sanserif;
116
        background-color:#FFFFFF;
117
        color:#000000;
118
        }
119
        .oddrow td {
120
        background: #efefef;
121
        }
122
        .evenrow td {
123
        background: #fff;
124
        }
125
        th, td {
126
        text-align: left;
127
        vertical-align: top;
128
        }
129
        th {
130
        font-weight:bold;
131
        background: #ccc;
132
        color: black;
133
        }
134
        table, th, td {
135
        font-size:100%;
136
        border: none
137
        }
138
        table.log tr td, tr th {
139
 
140
        }
141
        h2 {
142
        font-weight:bold;
143
        font-size:140%;
144
        margin-bottom: 5;
145
        }
146
        h3 {
147
        font-size:100%;
148
        font-weight:bold;
149
        background: #525D76;
150
        color: white;
151
        text-decoration: none;
152
        padding: 5px;
153
        margin-right: 2px;
154
        margin-left: 2px;
155
        margin-bottom: 0;
156
        }
157
    </xsl:template>
158
 
159
    <!--
160
    Creates an all-classes.html file that contains a link to all files.
161
    -->
162
    <xsl:template match="checkstyle" mode="all.classes">
163
        <html>
164
            <head>
165
                <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
166
            </head>
167
            <body>
168
                <h2>Files</h2>
169
                <p>
170
                    <table width="100%">
171
                        <!-- For each file create its part -->
172
                        <xsl:apply-templates select="file[count(error) != 0]" mode="all.classes">
173
                            <xsl:sort select="substring-after(@name, $basedir)"/>
174
                        </xsl:apply-templates>
175
                    </table>
176
                </p>
177
            </body>
178
        </html>
179
    </xsl:template>
180
 
181
    <xsl:template match="checkstyle" mode="filelist">
182
        <h3>Files</h3>
183
        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
184
            <tr>
185
                <th>Name</th>
186
                <th>Errors</th>
187
            </tr>
188
            <xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
189
                <xsl:sort select="count(error)" order="descending" data-type="number"/>
190
            </xsl:apply-templates>
191
        </table>
192
    </xsl:template>
193
 
194
    <xsl:template match="file" mode="filelist">
195
        <tr>
196
            <xsl:call-template name="alternated-row"/>
197
            <td nowrap="nowrap">
198
                <a>
199
                    <xsl:attribute name="href">
200
                        <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
201
                    </xsl:attribute>
202
                    <xsl:value-of select="substring-after(@name, $basedir)"/>
203
                </a>
204
            </td>
205
            <td><xsl:value-of select="count(error)"/></td>
206
        </tr>
207
    </xsl:template>
208
 
209
    <xsl:template match="file" mode="all.classes">
210
        <tr>
211
            <td nowrap="nowrap">
212
                <a target="fileFrame">
213
                    <xsl:attribute name="href">
214
                        <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
215
                    </xsl:attribute>
216
                    <xsl:value-of select="substring-after(@name, $basedir)"/>
217
                </a>
218
            </td>
219
        </tr>
220
    </xsl:template>
221
 
222
    <!--
223
    transform string like a/b/c to ../../../
224
    @param path the path to transform into a descending directory path
225
    -->
226
    <xsl:template name="path">
227
        <xsl:param name="path"/>
228
 
229
        <!-- Convert a windows path '\' to a unix path '/' for further processing. -->
230
        <xsl:variable name="path2" select="translate($path,'\','/')"/>
231
 
232
 
233
        <xsl:if test="contains($path2,'/')">
234
            <xsl:text>../</xsl:text>
235
            <xsl:call-template name="path">
236
                <xsl:with-param name="path"><xsl:value-of select="substring-after($path2,'/')"/></xsl:with-param>
237
            </xsl:call-template>
238
        </xsl:if>
239
        <xsl:if test="not(contains($path2,'/')) and not($path2 = '')">
240
            <xsl:text>../</xsl:text>
241
        </xsl:if>
242
    </xsl:template>
243
 
244
    <xsl:template match="file">
245
        <redirect:write file="{$output.dir}/files/{substring-after(@name, $basedir)}.html">
246
            <html>
247
                <head>
248
                    <link rel="stylesheet" type="text/css">
249
                        <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="substring-after(@name, $basedir)"/></xsl:call-template><xsl:text>stylesheet.css</xsl:text></xsl:attribute>
250
                    </link>
251
                </head>
252
                <body>
253
                    <xsl:call-template name="pageHeader"/>
254
                    <h3>File <xsl:value-of select="substring-after(@name, $basedir)"/></h3>
255
                    <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
256
                        <tr>
257
                            <th>Error Description</th>
258
                            <th>Line:Column</th>
259
                        </tr>
260
                        <xsl:for-each select="error">
261
                            <tr>
262
                                <xsl:call-template name="alternated-row"/>
263
                                <td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
264
                                <td align="center"><xsl:value-of select="@line"/><xsl:if test="@column">:<xsl:value-of select="@column"/></xsl:if></td>
265
                            </tr>
266
                        </xsl:for-each>
267
                    </table>
268
                </body>
269
            </html>
270
        </redirect:write>
271
    </xsl:template>
272
 
273
    <xsl:template match="checkstyle" mode="summary">
274
        <h3>Summary</h3>
275
        <xsl:variable name="fileCount" select="count(file)"/>
276
        <xsl:variable name="errorCount" select="count(file/error)"/>
277
        <xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
278
        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
279
            <tr>
280
                <th>Total Files</th>
281
                <th>Files With Errors</th>
282
                <th>Errors</th>
283
            </tr>
284
            <tr>
285
                <xsl:call-template name="alternated-row"/>
286
                <td><xsl:value-of select="$fileCount"/></td>
287
                <td><xsl:value-of select="$fileErrorCount"/></td>
288
                <td><xsl:value-of select="$errorCount"/></td>
289
            </tr>
290
        </table>
291
    </xsl:template>
292
 
293
    <xsl:template name="alternated-row">
294
        <xsl:attribute name="class">
295
            <xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
296
            <xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
297
        </xsl:attribute>
298
    </xsl:template>
299
</xsl:stylesheet>