]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/blob - contrib/bind9/bin/named/bind9.ver3.xsl
MFC r254651:
[FreeBSD/stable/9.git] / contrib / bind9 / bin / named / bind9.ver3.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  - Copyright (C) 2012, 2013  Internet Systems Consortium, Inc. ("ISC")
4  -
5  - Permission to use, copy, modify, and/or distribute this software for any
6  - purpose with or without fee is hereby granted, provided that the above
7  - copyright notice and this permission notice appear in all copies.
8  -
9  - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10  - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11  - AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12  - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13  - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15  - PERFORMANCE OF THIS SOFTWARE.
16 -->
17
18 <!-- $Id$ -->
19
20 <!-- %Id: bind9.xsl,v 1.21 2009/01/27 23:47:54 tbox Exp % -->
21 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
22   <xsl:output method="html" indent="yes" version="4.0"/>
23   <xsl:template match="statistics[@version=&quot;3.0&quot;]">
24     <html>
25       <head>
26         <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
27           <!-- Non Mozilla specific markup -->
28           <script type="text/javascript" src="https://www.google.com/jsapi"/>
29           <script type="text/javascript">
30         
31         google.load("visualization", "1", {packages:["corechart"]});
32         google.setOnLoadCallback(loadGraphs);
33
34         var graphs=[];
35         
36         function drawChart(chart_title,target,data) {
37           var data = google.visualization.arrayToDataTable(data);
38
39           var options = {
40             title: chart_title
41           };
42           
43           var chart = new google.visualization.BarChart(document.getElementById(target));
44           chart.draw(data, options);
45         }
46         
47         function loadGraphs(){
48           //alert("here we are!");
49           var g;
50             
51           // Server Incoming query Types
52           while(g = graphs.shift()){
53             // alert("going for: " + g.target);
54             if(g.data.length > 1){
55               drawChart(g.title,g.target,g.data);
56             }
57           }
58         }
59         
60             // Server Incoming Queries Types         
61            graphs.push({
62                         'title' : "Server Incoming Query Types",
63                         'target': 'chart_incoming_qtypes',
64                         'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type=&quot;qtype&quot;]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
65                         });
66
67
68            // Server Incoming Requests         
69            graphs.push({
70                         'title' : "Server Incoming Requests",
71                         'target': 'chart_incoming_requests',
72                         'data': [['Requests','Counter'],<xsl:for-each select="server/counters[@type=&quot;opcode&quot;]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]});
73         
74         
75         
76         
77       </script>
78         </xsl:if>
79         <style type="text/css">
80      body {
81       font-family: sans-serif;
82       background-color: #ffffff;
83       color: #000000;
84       font-size: 10pt;
85      }
86      
87      .odd{
88       background-color: #f0f0f0;
89      }
90      
91      .even{
92       background-color: #ffffff;
93      }
94      
95      p.footer{
96       font-style:italic;
97       color: grey;
98      }
99
100      table {
101       border-collapse: collapse;
102       border: 1px solid grey;
103      }
104
105      table.counters{
106       border: 1px solid grey;
107       width: 500px;
108      }
109      
110      table.counters th {
111       text-align: center;
112       border: 1px solid grey;
113       width: 120px;
114      }
115     table.counters td{
116       text-align:center;
117       
118     }
119     
120     table.counters tr:hover{
121       background-color: #99ddff;
122     }
123  
124      .totals {
125       background-color: rgb(1,169,206);
126       color: #ffffff;
127      }
128
129      td, th {
130       padding-right: 5px;
131       padding-left: 5px;
132       border: 1px solid grey;
133      }
134
135      .header h1 {
136       color: rgb(1,169,206);
137       padding: 0px;
138      }
139
140      .content {
141       background-color: #ffffff;
142       color: #000000;
143       padding: 4px;
144      }
145
146      .item {
147       padding: 4px;
148       text-align: right;
149      }
150
151      .value {
152       padding: 4px;
153       font-weight: bold;
154      }
155
156
157      h2 {
158        color: grey;
159        font-size: 14pt;
160        width:500px;
161        text-align:center;
162      }
163      
164      h3 {
165        color: #444444;
166        font-size: 12pt;
167        width:500px;
168        text-align:center;
169        
170      }
171      h4 {
172         color:  rgb(1,169,206);
173         font-size: 10pt;
174        width:500px;
175        text-align:center;
176         
177      }
178
179      .pie {
180       width:500px;
181       height: 500px;
182      }
183
184       </style>
185         <title>ISC BIND 9 Statistics</title>
186       </head>
187       <body>
188         <div class="header">
189           <h1>ISC Bind 9 Configuration and Statistics</h1>
190         </div>
191         <hr/>
192         <h2>Server Times</h2>
193         <table class="counters">
194           <tr>
195             <th>Boot time:</th>
196             <td>
197               <xsl:value-of select="server/boot-time"/>
198             </td>
199           </tr>
200           <tr>
201             <th>Sample time:</th>
202             <td>
203               <xsl:value-of select="server/current-time"/>
204             </td>
205           </tr>
206         </table>
207         <br/>
208         <h2>Incoming Requests</h2>
209         <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
210           <!-- Non Mozilla specific markup -->
211           <div class="pie" id="chart_incoming_requests">[no incoming requests]</div>
212         </xsl:if>
213         <table class="counters">
214           <xsl:for-each select="server/counters[@type=&quot;opcode&quot;]/counter">
215             <xsl:sort select="." data-type="number" order="descending"/>
216             <tr>
217               <th>
218                 <xsl:value-of select="@name"/>
219               </th>
220               <td>
221                 <xsl:value-of select="."/>
222               </td>
223             </tr>
224           </xsl:for-each>
225           <tr>
226             <th class="totals">Total:</th>
227             <td class="totals">
228               <xsl:value-of select="sum(server/counters[@type=&quot;opcode&quot;]/counter)"/>
229             </td>
230           </tr>
231         </table>
232         <br/>
233         <h3>Incoming Queries by Type</h3>
234         <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
235           <!-- Non Mozilla specific markup -->
236           <div class="pie" id="chart_incoming_qtypes">[no incoming queries]</div>
237         </xsl:if>
238         <table class="counters">
239           <xsl:for-each select="server/counters[@type=&quot;qtype&quot;]/counter">
240             <xsl:sort select="." data-type="number" order="descending"/>
241             <xsl:variable name="css-class">
242               <xsl:choose>
243                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
244                 <xsl:otherwise>odd</xsl:otherwise>
245               </xsl:choose>
246             </xsl:variable>
247             <tr class="{$css-class}">
248               <th>
249                 <xsl:value-of select="@name"/>
250               </th>
251               <td>
252                 <xsl:value-of select="."/>
253               </td>
254             </tr>
255           </xsl:for-each>
256           <tr>
257             <th class="totals">Total:</th>
258             <td class="totals">
259               <xsl:value-of select="sum(server/counters[@type=&quot;qtype&quot;]/counter)"/>
260             </td>
261           </tr>
262         </table>
263         <br/>
264         <h2>Outgoing Queries per view</h2>
265         <xsl:for-each select="views/view[count(counters[@type=&quot;resqtype&quot;]/counter) &gt; 0]">
266           <h3>View <xsl:value-of select="@name"/></h3>
267           <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
268             <!-- Non Mozilla specific markup -->
269           <script type="text/javascript">
270                 graphs.push({
271                               'title': "Outgoing queries for view: <xsl:value-of select="@name"/>",
272                               'target': 'chart_outgoing_queries_view_<xsl:value-of select="@name"/>',
273                               'data': [['Type','Counter'],<xsl:for-each select="counters[@type=&quot;resqtype&quot;]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
274                               });
275                               
276             </script>
277           <xsl:variable name="target">
278             <xsl:value-of select="@name"/>
279           </xsl:variable>
280             <div class="pie" id="chart_outgoing_queries_view_{$target}"/>
281           </xsl:if>
282           <table class="counters">
283             <xsl:for-each select="counters[@type=&quot;resqtype&quot;]/counter">
284               <xsl:sort select="." data-type="number" order="descending"/>
285               <xsl:variable name="css-class1">
286                 <xsl:choose>
287                   <xsl:when test="position() mod 2 = 0">even</xsl:when>
288                   <xsl:otherwise>odd</xsl:otherwise>
289                 </xsl:choose>
290               </xsl:variable>
291               <tr class="{$css-class1}">
292                 <th>
293                   <xsl:value-of select="@name"/>
294                 </th>
295                 <td>
296                   <xsl:value-of select="."/>
297                 </td>
298               </tr>
299             </xsl:for-each>
300           </table>
301           <br/>
302         </xsl:for-each>
303         <h2>Server Statistics</h2>
304         <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
305           <!-- Non Mozilla specific markup -->
306         <script type="text/javascript">
307                 graphs.push({
308                               'title' : "Server Counters",
309                               'target': 'chart_server_nsstat_restype',
310                               'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type=&quot;nsstat&quot;]/counter[.&gt;0]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
311                               });
312                               
313             </script>
314           <div class="pie" id="chart_server_nsstat_restype"/>
315         </xsl:if>
316         <table class="counters">
317           <xsl:for-each select="server/counters[@type=&quot;nsstat&quot;]/counter[.&gt;0]">
318             <xsl:sort select="." data-type="number" order="descending"/>
319             <xsl:variable name="css-class2">
320               <xsl:choose>
321                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
322                 <xsl:otherwise>odd</xsl:otherwise>
323               </xsl:choose>
324             </xsl:variable>
325             <tr class="{$css-class2}">
326               <th>
327                 <xsl:value-of select="@name"/>
328               </th>
329               <td>
330                 <xsl:value-of select="."/>
331               </td>
332             </tr>
333           </xsl:for-each>
334         </table>
335         <br/>
336         <h2>Zone Maintenance Statistics</h2>
337         <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
338         <script type="text/javascript">
339                       graphs.push({
340                                     'title' : "Zone Maintenance Stats",
341                                     'target': 'chart_server_zone_maint',
342                                     'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type=&quot;zonestat&quot;]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
343                                     });
344
345                   </script>
346           <!-- Non Mozilla specific markup -->
347           <div class="pie" id="chart_server_zone_maint"/>
348         </xsl:if>
349         <table class="counters">
350           <xsl:for-each select="server/counters[@type=&quot;zonestat&quot;]/counter">
351             <xsl:sort select="." data-type="number" order="descending"/>
352             <xsl:variable name="css-class3">
353               <xsl:choose>
354                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
355                 <xsl:otherwise>odd</xsl:otherwise>
356               </xsl:choose>
357             </xsl:variable>
358             <tr class="{$css-class3}">
359               <th>
360                 <xsl:value-of select="@name"/>
361               </th>
362               <td>
363                 <xsl:value-of select="."/>
364               </td>
365             </tr>
366           </xsl:for-each>
367         </table>
368         <h2>Resolver Statistics (Common)</h2>
369         <table class="counters">
370           <xsl:for-each select="server/counters[@type=&quot;restat&quot;]/counter">
371             <xsl:sort select="." data-type="number" order="descending"/>
372             <xsl:variable name="css-class4">
373               <xsl:choose>
374                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
375                 <xsl:otherwise>odd</xsl:otherwise>
376               </xsl:choose>
377             </xsl:variable>
378             <tr class="{$css-class4}">
379               <th>
380                 <xsl:value-of select="@name"/>
381               </th>
382               <td>
383                 <xsl:value-of select="."/>
384               </td>
385             </tr>
386           </xsl:for-each>
387         </table>
388         <xsl:for-each select="views/view">
389           <h3>Resolver Statistics for View <xsl:value-of select="@name"/></h3>
390           <table class="counters">
391             <xsl:for-each select="counters[@type=&quot;resstats&quot;]/counter[.&gt;0]">
392               <xsl:sort select="." data-type="number" order="descending"/>
393               <xsl:variable name="css-class5">
394                 <xsl:choose>
395                   <xsl:when test="position() mod 2 = 0">even</xsl:when>
396                   <xsl:otherwise>odd</xsl:otherwise>
397                 </xsl:choose>
398               </xsl:variable>
399               <tr class="{$css-class5}">
400                 <th>
401                   <xsl:value-of select="@name"/>
402                 </th>
403                 <td>
404                   <xsl:value-of select="."/>
405                 </td>
406               </tr>
407             </xsl:for-each>
408           </table>
409         </xsl:for-each>
410         <h3>Cache DB RRsets for View <xsl:value-of select="@name"/></h3>
411         <xsl:for-each select="views/view">
412           <table class="counters">
413             <xsl:for-each select="cache/rrset">
414               <xsl:variable name="css-class6">
415                 <xsl:choose>
416                   <xsl:when test="position() mod 2 = 0">even</xsl:when>
417                   <xsl:otherwise>odd</xsl:otherwise>
418                 </xsl:choose>
419               </xsl:variable>
420               <tr class="{$css-class6}">
421                 <th>
422                   <xsl:value-of select="name"/>
423                 </th>
424                 <td>
425                   <xsl:value-of select="counter"/>
426                 </td>
427               </tr>
428             </xsl:for-each>
429           </table>
430           <br/>
431         </xsl:for-each>
432         <h2>Socket I/O Statistics</h2>
433         <table class="counters">
434           <xsl:for-each select="server/counters[@type=&quot;sockstat&quot;]/counter[.&gt;0]">
435             <xsl:variable name="css-class7">
436               <xsl:choose>
437                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
438                 <xsl:otherwise>odd</xsl:otherwise>
439               </xsl:choose>
440             </xsl:variable>
441             <tr class="{$css-class7}">
442               <th>
443                 <xsl:value-of select="@name"/>
444               </th>
445               <td>
446                 <xsl:value-of select="."/>
447               </td>
448             </tr>
449           </xsl:for-each>
450         </table>
451         <br/>
452         <br/>
453         <h2>Response Codes per view/zone</h2>
454         <xsl:for-each select="views/view[zones/zone/counters[@type=&quot;rcode&quot;]/counter &gt;0]">
455           <h3>View <xsl:value-of select="@name"/></h3>
456           <xsl:variable name="thisview">
457             <xsl:value-of select="@name"/>
458           </xsl:variable>
459           <xsl:for-each select="zones/zone">
460             <xsl:if test="counters[@type=&quot;rcode&quot;]/counter[. &gt; 0]">
461               <h4>Zone <xsl:value-of select="@name"/></h4>
462               <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
463                 <!-- Non Mozilla specific markup -->
464               <script type="text/javascript">
465                       graphs.push({
466                                     'title': "Response Codes for zone <xsl:value-of select="@name"/>",
467                                     'target': 'chart_rescode_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>',
468                                     'data': [['Type','Counter'],<xsl:for-each select="counters[@type=&quot;rcode&quot;]/counter[.&gt;0 and @name != &quot;QryAuthAns&quot;]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
469                                     });
470
471                   </script>
472               <xsl:variable name="target">
473                 <xsl:value-of select="@name"/>
474               </xsl:variable>
475                 <div class="pie" id="chart_rescode_{$thisview}_{$target}"/>
476               </xsl:if>
477               <table class="counters">
478                 <xsl:for-each select="counters[@type=&quot;rcode&quot;]/counter[.&gt;0 and @name != &quot;QryAuthAns&quot;]">
479                   <xsl:sort select="."/>
480                   <xsl:variable name="css-class10">
481                     <xsl:choose>
482                       <xsl:when test="position() mod 2 = 0">even</xsl:when>
483                       <xsl:otherwise>odd</xsl:otherwise>
484                     </xsl:choose>
485                   </xsl:variable>
486                   <tr class="{$css-class10}">
487                     <th>
488                       <xsl:value-of select="@name"/>
489                     </th>
490                     <td>
491                       <xsl:value-of select="."/>
492                     </td>
493                   </tr>
494                 </xsl:for-each>
495               </table>
496             </xsl:if>
497           </xsl:for-each>
498         </xsl:for-each>
499         <h2>Received QTYPES per view/zone</h2>
500         <xsl:for-each select="views/view[zones/zone/counters[@type=&quot;qtype&quot;]/counter &gt;0]">
501           <h3>View <xsl:value-of select="@name"/></h3>
502           <xsl:variable name="thisview2">
503             <xsl:value-of select="@name"/>
504           </xsl:variable>
505           <xsl:for-each select="zones/zone">
506             <xsl:if test="counters[@type=&quot;qtype&quot;]/counter[count(.) &gt; 0]">
507               <h4>Zone <xsl:value-of select="@name"/></h4>
508               <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
509                 <!-- Non Mozilla specific markup -->
510               <script type="text/javascript">
511                       graphs.push({
512                                     'title': "Query Types for zone <xsl:value-of select="@name"/>",
513                                     'target': 'chart_qtype_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>',
514                                     'data': [['Type','Counter'],<xsl:for-each select="counters[@type=&quot;qtype&quot;]/counter[.&gt;0 and @name != &quot;QryAuthAns&quot;]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
515                                     });
516
517                   </script>
518               <xsl:variable name="target">
519                 <xsl:value-of select="@name"/>
520               </xsl:variable>
521                 <div class="pie" id="chart_qtype_{$thisview2}_{$target}"/>
522               </xsl:if>
523               <table class="counters">
524                 <xsl:for-each select="counters[@type=&quot;qtype&quot;]/counter">
525                   <xsl:sort select="."/>
526                   <xsl:variable name="css-class11">
527                     <xsl:choose>
528                       <xsl:when test="position() mod 2 = 0">even</xsl:when>
529                       <xsl:otherwise>odd</xsl:otherwise>
530                     </xsl:choose>
531                   </xsl:variable>
532                   <tr class="{$css-class11}">
533                     <th>
534                       <xsl:value-of select="@name"/>
535                     </th>
536                     <td>
537                       <xsl:value-of select="."/>
538                     </td>
539                   </tr>
540                 </xsl:for-each>
541               </table>
542             </xsl:if>
543           </xsl:for-each>
544         </xsl:for-each>
545         <h2>Network Status</h2>
546         <table class="counters">
547           <tr>
548             <th>ID</th>
549             <th>Name</th>
550             <th>Type</th>
551             <th>References</th>
552             <th>LocalAddress</th>
553             <th>PeerAddress</th>
554             <th>State</th>
555           </tr>
556           <xsl:for-each select="socketmgr/sockets/socket">
557             <xsl:sort select="id"/>
558             <xsl:variable name="css-class12">
559               <xsl:choose>
560                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
561                 <xsl:otherwise>odd</xsl:otherwise>
562               </xsl:choose>
563             </xsl:variable>
564             <tr class="{$css-class12}">
565               <td>
566                 <xsl:value-of select="id"/>
567               </td>
568               <td>
569                 <xsl:value-of select="name"/>
570               </td>
571               <td>
572                 <xsl:value-of select="type"/>
573               </td>
574               <td>
575                 <xsl:value-of select="references"/>
576               </td>
577               <td>
578                 <xsl:value-of select="local-address"/>
579               </td>
580               <td>
581                 <xsl:value-of select="peer-address"/>
582               </td>
583               <td>
584                 <xsl:for-each select="states">
585                   <xsl:value-of select="."/>
586                 </xsl:for-each>
587               </td>
588             </tr>
589           </xsl:for-each>
590         </table>
591         <br/>
592         <h2>Task Manager Configuration</h2>
593         <table class="counters">
594           <tr>
595             <th class="even">Thread-Model</th>
596             <td>
597               <xsl:value-of select="taskmgr/thread-model/type"/>
598             </td>
599           </tr>
600           <tr class="odd">
601             <th>Worker Threads</th>
602             <td>
603               <xsl:value-of select="taskmgr/thread-model/worker-threads"/>
604             </td>
605           </tr>
606           <tr class="even">
607             <th>Default Quantum</th>
608             <td>
609               <xsl:value-of select="taskmgr/thread-model/default-quantum"/>
610             </td>
611           </tr>
612           <tr class="odd">
613             <th>Tasks Running</th>
614             <td>
615               <xsl:value-of select="taskmgr/thread-model/tasks-running"/>
616             </td>
617           </tr>
618         </table>
619         <br/>
620         <h2>Tasks</h2>
621         <table class="counters">
622           <tr>
623             <th>ID</th>
624             <th>Name</th>
625             <th>References</th>
626             <th>State</th>
627             <th>Quantum</th>
628           </tr>
629           <xsl:for-each select="taskmgr/tasks/task">
630             <xsl:sort select="name"/>
631             <xsl:variable name="css-class14">
632               <xsl:choose>
633                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
634                 <xsl:otherwise>odd</xsl:otherwise>
635               </xsl:choose>
636             </xsl:variable>
637             <tr class="{$css-class14}">
638               <td>
639                 <xsl:value-of select="id"/>
640               </td>
641               <td>
642                 <xsl:value-of select="name"/>
643               </td>
644               <td>
645                 <xsl:value-of select="references"/>
646               </td>
647               <td>
648                 <xsl:value-of select="state"/>
649               </td>
650               <td>
651                 <xsl:value-of select="quantum"/>
652               </td>
653             </tr>
654           </xsl:for-each>
655         </table>
656         <br/>
657         <h2>Memory Usage Summary</h2>
658         <table class="counters">
659           <xsl:for-each select="memory/summary/*">
660             <xsl:variable name="css-class13">
661               <xsl:choose>
662                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
663                 <xsl:otherwise>odd</xsl:otherwise>
664               </xsl:choose>
665             </xsl:variable>
666             <tr class="{$css-class13}">
667               <th>
668                 <xsl:value-of select="name()"/>
669               </th>
670               <td>
671                 <xsl:value-of select="."/>
672               </td>
673             </tr>
674           </xsl:for-each>
675         </table>
676         <br/>
677         <h2>Memory Contexts</h2>
678         <table class="counters">
679           <tr>
680             <th>ID</th>
681             <th>Name</th>
682             <th>References</th>
683             <th>TotalUse</th>
684             <th>InUse</th>
685             <th>MaxUse</th>
686             <th>BlockSize</th>
687             <th>Pools</th>
688             <th>HiWater</th>
689             <th>LoWater</th>
690           </tr>
691           <xsl:for-each select="memory/contexts/context">
692             <xsl:sort select="total" data-type="number" order="descending"/>
693             <xsl:variable name="css-class14">
694               <xsl:choose>
695                 <xsl:when test="position() mod 2 = 0">even</xsl:when>
696                 <xsl:otherwise>odd</xsl:otherwise>
697               </xsl:choose>
698             </xsl:variable>
699             <tr class="{$css-class14}">
700               <td>
701                 <xsl:value-of select="id"/>
702               </td>
703               <td>
704                 <xsl:value-of select="name"/>
705               </td>
706               <td>
707                 <xsl:value-of select="references"/>
708               </td>
709               <td>
710                 <xsl:value-of select="total"/>
711               </td>
712               <td>
713                 <xsl:value-of select="inuse"/>
714               </td>
715               <td>
716                 <xsl:value-of select="maxinuse"/>
717               </td>
718               <td>
719                 <xsl:value-of select="blocksize"/>
720               </td>
721               <td>
722                 <xsl:value-of select="pools"/>
723               </td>
724               <td>
725                 <xsl:value-of select="hiwater"/>
726               </td>
727               <td>
728                 <xsl:value-of select="lowater"/>
729               </td>
730             </tr>
731           </xsl:for-each>
732         </table>
733         <hr/>
734         <p class="footer">Internet Systems Consortium Inc.<br/><a href="http://www.isc.org">http://www.isc.org</a></p>
735       </body>
736     </html>
737   </xsl:template>
738 </xsl:stylesheet>