bind9.xsl revision 2b8dac99166f74532264f756f5c0b43a6b04d995
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence - Copyright (C) 2006-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - Permission to use, copy, modify, and/or distribute this software for any
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - purpose with or without fee is hereby granted, provided that the above
7e4d75a5daeaaf8a7f559f9bd7fbf540184e235cMark Andrews - copyright notice and this permission notice appear in all copies.
823ca3c14f1596341bdd50707c01f3b529b75b4aAutomatic Updater - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein - PERFORMANCE OF THIS SOFTWARE.
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein<!-- $Id$ -->
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein<!-- %Id: bind9.xsl,v 1.21 2009/01/27 23:47:54 tbox Exp % -->
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein <xsl:output method="html" indent="yes" version="4.0"/>
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein <xsl:template match="statistics[@version="3.0"]">
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein <!-- Non Mozilla specific markup -->
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater <script type="text/javascript" src="https://www.google.com/jsapi"/>
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein google.load("visualization", "1", {packages:["corechart"]});
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein var graphs=[];
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein function drawChart(chart_title,target,data) {
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater var data = google.visualization.arrayToDataTable(data);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein var options = {
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein title: chart_title
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein var chart = new google.visualization.BarChart(document.getElementById(target));
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater chart.draw(data, options);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein function loadGraphs(){
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater //alert("here we are!");
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein // Server Incoming query Types
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater // alert("going for: " + g.target);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein // Server Incoming Queries Types
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein 'title' : "Server Incoming Query Types",
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater 'target': 'chart_incoming_qtypes',
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="qtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein // Server Incoming Requests
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein 'title' : "Server Incoming Requests",
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein 'target': 'chart_incoming_requests',
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater 'data': [['Requests','Counter'],<xsl:for-each select="server/counters[@type="opcode"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]});
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater font-family: sans-serif;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein background-color: #ffffff;
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater color: #000000;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein font-size: 10pt;
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater background-color: #f0f0f0;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein background-color: #ffffff;
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater font-style:italic;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein color: grey;
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater border-collapse: collapse;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein border: 1px solid grey;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein border: 1px solid grey;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein width: 500px;
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater text-align: center;
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein border: 1px solid grey;
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence width: 120px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews text-align:center;
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff background-color: #99ddff;
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff background-color: rgb(1,169,206);
37d266d288410d1ead241c02a8a1dbcb0160be46Michael Graff color: #ffffff;
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark Andrews padding-right: 5px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews padding-left: 5px;
d0783e645b149fcea7e7f22cd43f87b5d188b055Mark Andrews border: 1px solid grey;
5236050c0f819b727dfc4850133f5194f346f76fDanny Mayer .header h1 {
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence color: rgb(1,169,206);
35c842e05dc6382ce1d9161a658d3ff4b2c3d4c9Bob Halley padding: 0px;
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence background-color: #ffffff;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews color: #000000;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews text-align: right;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews padding: 4px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews font-weight: bold;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews color: grey;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews font-size: 14pt;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews width:500px;
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence text-align:center;
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence color: #444444;
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence font-size: 12pt;
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence text-align:center;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews color: rgb(1,169,206);
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews font-size: 10pt;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews width:500px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews text-align:center;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews width:500px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews height: 500px;
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <h1>ISC Bind 9 Configuration and Statistics</h1>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <!-- Non Mozilla specific markup -->
35c842e05dc6382ce1d9161a658d3ff4b2c3d4c9Bob Halley <div class="pie" id="chart_incoming_requests">[graph of incoming requests]</div>
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence <xsl:for-each select="server/counters[@type="opcode"]/counter">
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:value-of select="sum(server/counters[@type="opcode"]/counter)"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
bb6936058eb88eadff030462a347c10895c61a9aMark Andrews <!-- Non Mozilla specific markup -->
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence <div class="pie" id="chart_incoming_qtypes">[graph of incoming qtypes]</div>
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence <xsl:for-each select="server/counters[@type="qtype"]/counter">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:sort select="." data-type="number" order="descending"/>
bb6936058eb88eadff030462a347c10895c61a9aMark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:value-of select="sum(server/counters[@type="qtype"]/counter)"/>
6add3af8397580475ab9fa10ac8c1269465cff87Mark Andrews <xsl:for-each select="views/view[count(counters[@type="resqtype"]/counter) > 0]">
8f80322fb58bac39c84bb76cb2bc82406bd6a9ecBrian Wellington <h3>View <xsl:value-of select="@name"/></h3>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <!-- Non Mozilla specific markup -->
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews 'title': "Outgoing queries for view: <xsl:value-of select="@name"/>",
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews 'target': 'chart_outgoing_queries_view_<xsl:value-of select="@name"/>',
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="resqtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
ef22fffeebffacbcbce1f8d68d0c3f29a7d4a59eEvan Hunt <div class="pie" id="chart_outgoing_queries_view_{$target}"/>
823ca3c14f1596341bdd50707c01f3b529b75b4aAutomatic Updater <xsl:for-each select="counters[@type="resqtype"]/counter">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence <!-- Non Mozilla specific markup -->
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews 'title' : "Server Counters",
823ca3c14f1596341bdd50707c01f3b529b75b4aAutomatic Updater 'target': 'chart_server_nsstat_restype',
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <div class="pie" id="chart_server_nsstat_restype"/>
03084608809afbaf570093a14d2dc4ad507336a0Brian Wellington <xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]">
1a03b5e68553c37e9cc0097368909dfc37fb8cefMark Andrews <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
ca81c3971cd0c9cfd830c0a18289d4d1b0f9de01David Lawrence <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews 'title' : "Zone Maintenance Stats",
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews 'target': 'chart_server_zone_maint',
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="zonestat"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <!-- Non Mozilla specific markup -->
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <div class="pie" id="chart_server_zone_maint"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:for-each select="server/counters[@type="zonestat"]/counter">
5eb91bd90e3ad3426e5e3213031556a737cf3809Mark Andrews <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence <xsl:for-each select="server/counters[@type="resstat"]/counter">
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
03084608809afbaf570093a14d2dc4ad507336a0Brian Wellington <h3>Resolver Statistics for View <xsl:value-of select="@name"/></h3>
171d0db7f93bf796f870713d6208b21893401cfcBrian Wellington <xsl:for-each select="counters[@type="resstats"]/counter[.>0]">
171d0db7f93bf796f870713d6208b21893401cfcBrian Wellington <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <h3>ADB Statistics for View <xsl:value-of select="@name"/></h3>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:for-each select="counters[@type="adbstat"]/counter[.>0]">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
ef22fffeebffacbcbce1f8d68d0c3f29a7d4a59eEvan Hunt <h3>Cache Statistics for View <xsl:value-of select="@name"/></h3>
ef22fffeebffacbcbce1f8d68d0c3f29a7d4a59eEvan Hunt <xsl:for-each select="counters[@type="cachestats"]/counter[.>0]">
ef22fffeebffacbcbce1f8d68d0c3f29a7d4a59eEvan Hunt <xsl:sort select="." data-type="number" order="descending"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <h3>Cache DB RRsets for View <xsl:value-of select="@name"/></h3>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:for-each select="server/counters[@type="sockstat"]/counter[.>0]">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:for-each select="views/view[zones/zone/counters[@type="rcode"]/counter >0]">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:if test="counters[@type="rcode"]/counter[. > 0]">
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <!-- Non Mozilla specific markup -->
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'title': "Response Codes for zone <xsl:value-of select="@name"/>",
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'target': 'chart_rescode_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>',
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <div class="pie" id="chart_rescode_{$thisview}_{$target}"/>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:for-each select="views/view[zones/zone/counters[@type="qtype"]/counter >0]">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:if test="counters[@type="qtype"]/counter[count(.) > 0]">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:if test="system-property('xsl:vendor')!='Transformiix'">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <!-- Non Mozilla specific markup -->
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'title': "Query Types for zone <xsl:value-of select="@name"/>",
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'target': 'chart_qtype_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>',
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="qtype"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <div class="pie" id="chart_qtype_{$thisview2}_{$target}"/>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:for-each select="counters[@type="qtype"]/counter">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:for-each select="socketmgr/sockets/socket">
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:value-of select="taskmgr/thread-model/type"/>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:value-of select="taskmgr/thread-model/worker-threads"/>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:value-of select="taskmgr/thread-model/default-quantum"/>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:value-of select="taskmgr/thread-model/tasks-running"/>
bdb1394788a677d0b6e8499ba1ece17a73f476c7Mark Andrews <xsl:value-of select="taskmgr/thread-model/tasks-ready"/>
47ee25b1f58a5924c51b59194b84621b9b7b6ba5Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:when test="position() mod 2 = 0">even</xsl:when>
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:for-each select="memory/contexts/context">
7d2b275f7e9238e2c709737601f6260b5a9a4ee1Mark Andrews <xsl:sort select="total" data-type="number" order="descending"/>
e851ea826066ac5a5b01c2c23218faa0273a12e8Evan Hunt <xsl:when test="position() mod 2 = 0">even</xsl:when>
800fb35bf0c1cfcd82b542944b0d29e1837d8a09Automatic Updater <p class="footer">Internet Systems Consortium Inc.<br/><a href="http://www.isc.org">http://www.isc.org</a></p>