Просмотр исходного кода

reworked XSL reports

[SVN r23218]
Aleksey Gurtovoy 22 лет назад
Родитель
Сommit
3740d44f4e

+ 5 - 9
tools/regression/xsl_reports/xsl/common.xsl

@@ -1,15 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
- (C) Copyright MetaCommunications, Inc. 2003.
-
- Permission to use, copy, modify, distribute and sell this software
- and its documentation for any purpose is hereby granted without fee, 
- provided that the above copyright notice appears in all copies and 
- that both the copyright notice and this permission notice appear in 
- supporting documentation. No representations are made about the 
- suitability of this software for any purpose. It is provided "as is" 
- without express or implied warranty.
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
 
 -->
 

+ 35 - 0
tools/regression/xsl_reports/xsl/html/issues_legend.html

@@ -0,0 +1,35 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+<div class="legend">
+<table border="0" summary="report description">
+<tr>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected new fail legend">
+                <tr class="library-row-single"><td class="library-fail-unexpected-new">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">Failure on a newly added test/compiler.</td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected fail legend">
+                <tr class="library-row-single"><td class="library-fail-unexpected">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">Unexpected failure.</td>
+        </tr>
+    </table>
+    </td>
+</tr>
+</table>
+</div>

+ 71 - 0
tools/regression/xsl_reports/xsl/html/library_developer_legend.html

@@ -0,0 +1,71 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+<div class="legend">
+<table border="0" summary="report description">
+<tr>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="success legend">
+                <tr class="library-row-single"><td class="library-success-expected">pass</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">success</td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected pass legend">
+                <tr class="library-row-single"><td class="library-success-unexpected">pass</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">unexpected success</td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="expected fail legend">
+                <tr class="library-row-single"><td class="library-fail-expected">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">expected failure</td>
+        </tr>
+    </table>
+    </td>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected new fail legend">
+                <tr class="library-row-single"><td class="library-fail-unexpected-new">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">failure on a newly added test/compiler</td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected fail legend">
+                <tr class="library-row-single"><td class="library-fail-unexpected">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">unexpected failure</td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unusable legend">
+                <tr class="library-row-single"><td class="library-unusable">n/a</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">the library author marked it as unusable on particular platform/toolset</td>
+        </tr>
+    </table>
+    </td>
+</tr>
+</table>
+</div>

+ 65 - 0
tools/regression/xsl_reports/xsl/html/library_user_legend.html

@@ -0,0 +1,65 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+-->
+
+<div class="legend">
+<table border="0" summary="report description">
+<tr>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="success legend">
+                    <tr class="library-row-single"><td class="library-user-success">pass</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                The test passes.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="fail legend">
+                    <tr class="library-row-single"><td class="library-user-fail-expected">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                A known test failure; click on the link to see the log.
+            </td>
+        </tr>
+    </table>
+    </td>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected fail legend">
+                    <tr class="library-row-single"><td class="library-user-fail-unexpected">unexp.</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                The test is known to pass, but is currently failing; 
+                click on the link to see the log.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unusable legend">
+                    <tr class="library-row-single"><td class="library-unusable">n/a</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                The library author marked it as unusable on particular platform/toolset.
+            </td>
+        </tr>
+    </table>
+  </td>
+</tr>
+</table>
+</div>

+ 24 - 0
tools/regression/xsl_reports/xsl/html/make_tinyurl.html

@@ -0,0 +1,24 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+-->
+
+<div class="tinyurl">
+
+<script type="text/javascript">
+<!--
+function make_tinyurl()
+{
+    window.open( 'http://tinyurl.com/create.php?url=' + parent.location.href );
+}
+//-->
+</script>
+
+<a href="javascript:make_tinyurl()">TinyUrl</a>
+
+</div>

+ 226 - 191
tools/regression/xsl_reports/xsl/master.css → tools/regression/xsl_reports/xsl/html/master.css

@@ -1,103 +1,156 @@
 /* All reports */
 
 body
-    {
+{
     background-color: white;
-    }
+}
+
+body.user-toc
+{
+    background-color: #f0f0f0;
+}
+
+body.developer-toc
+{
+    background-color: #f0f5ff;
+}
 
 span.super
-    {
+{
     vertical-align: super;
-    font-size:80%;
+    font-size: 80%;
     margin-left: 3pt;
-    }
+}
 
 h1.page-title
-    { 
+{ 
     text-align: left;
     text-transform: capitalize;
+    margin-top: 10pt;
     margin-bottom: 10pt;
-    }
+}
+
+img
+{
+    display: inline;
+}
+
+ a.hover-link:link
+,a.hover-link:visited
+,a.hover-link:active
+{
+    color: black;
+    text-decoration: none;
+}
+
+a.hover-link:hover
+{
+    color: black;
+    text-decoration: underline;
+}
+
+div.legend
+{
+    width: 800px;
+    background-color: #f5f5f5;
+    margin-top: 10pt;    
+}
+
+div.comment
+{
+    width: 800px;
+    background-color: #f5f5f5;
+    padding-left: 10pt;
+    padding-right: 10pt;
+    padding-bottom: 10pt;
+}
+
+div.tinyurl
+{
+    margin-top: 10pt;    
+}
 
 table.header-table
-    {
+{
     margin-left: 10pt;
     margin-top: 20pt;
     margin-bottom: 10pt;
     width: 800px;
-    }
+}
 
 td.header-item
-    { 
+{ 
     text-align: left;
     vertical-align: top;
     font-weight: bold;
-    }
+}
 
 td.header-item-content
-    { 
+{ 
     padding-left: 20pt;
     padding-bottom: 10pt;
-    }
+}
 
 td.legend-item
-    { 
+{ 
     padding-left: 5pt;
-    padding-top: 2pt;
-    }
+/*    padding-top: 2pt;*/
+}
 
 div.acknowledgement
-    {
+{
     text-align: left;
     margin-top: 10pt;
     margin-left: 5pt;
     margin-bottom: 10pt;
-    }
+}
+
+div.report-info
+{ 
+    text-align: left;
+    margin-bottom: 10pt;
+    width: 80%;
+}
 
 div.purpose
-    { 
+{ 
     text-align: left;
     margin-left: 5pt;
     margin-top: 10pt;
-    }
+}
 
-div.legend
-    { 
-    text-align: left;
-    margin-left: 15pt;
-    }
 
 div.library-name
-    { 
+{ 
     margin-top: 20pt;
     margin-bottom: 10pt;
     text-align: left;
     font-size: 125%;
     font-weight: bold;
-    }
+}
 
 table.summary-table
-,table.detail-table
-    { 
+,table.library-table
+{ 
     border-collapse: collapse;
     border: 2px solid black;
     margin: 5px;
-    }
+}
 
  table.summary-table td
-,table.detail-table td
-    { 
+,table.library-table td
+{ 
     text-align: center;
     border-left: 1px solid black;
     border-right: 1px solid black;
-    }
+}
 
  a.log-link:link
 ,a.log-link:visited
-    {
+{
      color: black; 
 /*  text-decoration: none; */
-    }
+}
 
  a.log-link:active
 ,a.log-link:hover
@@ -105,65 +158,66 @@ table.summary-table
 ,a.legend-link:visited
 ,a.legend-link:active
 ,a.legend-link:hover
-    {
+{
     color: black; 
     text-decoration: underline;
-    }
+}
 
 td.toolset-name
-    {
+{
     vertical-align: middle;
     padding-left: 3pt;  
     padding-right: 3pt;  
-    }
+}
 
 td.required-toolset-name
-    {
+{
     font-weight: bold;
     vertical-align: middle;
     padding-left: 3pt;  
     padding-right: 3pt;  
-    }
+}
 
-td.detail-corner-case-header
-    {
-    }
+td.library-corner-case-header
+{
+}
 
 tr.summary-row-first td
-, tr.detail-row-first td 
-    {
+, tr.library-row-first td 
+{
     border-top: 1px solid gray;
     border-bottom: 0px;
-    }
+}
 
 tr.summary-row-last td
-, tr.detail-row-last td 
-    {
+, tr.library-row-last td 
+{
     border-top: 0px;
     border-bottom: 1px solid gray;
-    }
+}
 
 tr.summary-row-single td
-, tr.detail-row-single td 
-    {
+, tr.library-row-single td 
+{
     border-top: 1px solid gray;
     border-bottom: 1px solid gray;
-    }
+}
 
 tr.summary-row td
-, tr.detail-row td 
-    {
+, tr.library-row td 
+{
     border-bottom: 0px;
     border-top: 0px; 
-    }
+}
 
- td.detail-success-expected
-,td.detail-fail-expected
-,td.detail-user-success
+ td.library-success-expected
+,td.library-fail-expected
+,td.library-user-fail-expected
+,td.library-user-success
 ,td.summary-expected
 ,td.summary-user-fail-expected
 ,td.summary-user-success
-    { 
+{ 
     width: 60pt;
     text-align: center;
     background-color: lightgreen;
@@ -171,11 +225,11 @@ tr.summary-row td
     border-right: 1px solid black;
     padding-left: 2pt;
     padding-right: 2pt;
-    }
+}
 
- td.detail-success-unexpected
+ td.library-success-unexpected
 ,td.summary-success-unexpected
-    { 
+{ 
     width: 60pt;
     text-align: center;
     background-color: green;
@@ -184,24 +238,24 @@ tr.summary-row td
     border: 0px;
     padding-left: 2pt;
     padding-right: 2pt;
-    }
+}
 
 
-tr.summary-row              td.summary-fail-unexpected
-    , tr.summary-row-first  td.summary-fail-unexpected
-    , tr.summary-row-last   td.summary-fail-unexpected
-    , tr.summary-row-single td.summary-fail-unexpected  
+ tr.summary-row         td.summary-fail-unexpected
+,tr.summary-row-first   td.summary-fail-unexpected
+,tr.summary-row-last    td.summary-fail-unexpected
+,tr.summary-row-single  td.summary-fail-unexpected  
 
-,tr.summary-row             td.summary-user-fail-unexpected    
-    ,tr.summary-row-first   td.summary-user-fail-unexpected
-    ,tr.summary-row-last    td.summary-user-fail-unexpected
-    ,tr.summary-row-simple  td.summary-user-fail-unexpected
+,tr.summary-row         td.summary-user-fail-unexpected    
+,tr.summary-row-first   td.summary-user-fail-unexpected
+,tr.summary-row-last    td.summary-user-fail-unexpected
+,tr.summary-row-single  td.summary-user-fail-unexpected
 
-,tr.detail-row              td.detail-user-fail-unexpected
-    , tr.detail-row-first   td.detail-user-fail-unexpected
-    , tr.detail-row-last    td.detail-user-fail-unexpected
-    , tr.detail-row-simple  td.detail-user-fail-unexpected
-    { 
+,tr.library-row         td.library-user-fail-unexpected
+,tr.library-row-first   td.library-user-fail-unexpected
+,tr.library-row-last    td.library-user-fail-unexpected
+,tr.library-row-single  td.library-user-fail-unexpected
+{ 
     width: 60pt;
     text-align: center;
     background-color: red;
@@ -209,18 +263,18 @@ tr.summary-row              td.summary-fail-unexpected
     border: 2px solid black; 
     padding-left: 2pt;
     padding-right: 2pt;
-    }
-
-tr.summary-row                  td.summary-missing
-    , tr.summary-row-first      td.summary-missing
-    , tr.summary-row-last       td.summary-missing
-    , tr.summary-row-single     td.summary-missing
-
-, tr.detail-row                 td.detail-missing
-    , tr.detail-row-first       td.detail-missing
-    , tr.detail-row-last        td.detail-missing
-    , tr.detail-row-single      td.detail-missing
-    {
+}
+
+  tr.summary-row        td.summary-missing
+, tr.summary-row-first  td.summary-missing
+, tr.summary-row-last   td.summary-missing
+, tr.summary-row-single td.summary-missing
+
+, tr.library-row        td.library-missing
+, tr.library-row-first  td.library-missing
+, tr.library-row-last   td.library-missing
+, tr.library-row-single td.library-missing
+{
     width: 60pt;
     text-align: center;
     background-color: white;
@@ -228,18 +282,18 @@ tr.summary-row                  td.summary-missing
     border: 2px solid black; 
     padding-left: 2pt;
     padding-right: 2pt;
-    }
-
-tr.summary-row td.summary-unusable
-    , tr.summary-row-first  td.summary-unusable
-    , tr.summary-row-last   td.summary-unusable
-    , tr.summary-row-single td.summary-unusable
-
-, tr.detail-row             td.detail-unusable
-    , tr.detail-row-first   td.detail-unusable
-    , tr.detail-row-last    td.detail-unusable
-    , tr.detail-row-single  td.detail-unusable
-    {
+}
+
+  tr.summary-row        td.summary-unusable
+, tr.summary-row-first  td.summary-unusable
+, tr.summary-row-last   td.summary-unusable
+, tr.summary-row-single td.summary-unusable
+
+, tr.library-row        td.library-unusable
+, tr.library-row-first  td.library-unusable
+, tr.library-row-last   td.library-unusable
+, tr.library-row-single td.library-unusable
+{
     width: 60pt;  
     text-align: center;
     background-color: silver;
@@ -250,23 +304,23 @@ tr.summary-row td.summary-unusable
     border-right: 2px solid black; 
     padding-left: 2pt;
     padding-right: 2pt;
-    }
+}
 
 /* Summary */
 
 table.summary-table td.library-name
-    {
+{
     width: 100pt;
     padding: 0pt;
     border-top: 1px solid gray;
     border-bottom: 1px solid gray;
-    }
+}
 
-tr.summary-row              td.summary-user-fail-unexpected
-    , tr.summary-row-first  td.summary-user-fail-unexpected
-    , tr.summary-row-last   td.summary-user-fail-unexpected
-    , tr.summary-row-single td.summary-user-fail-unexpected
-    { 
+  tr.summary-row        td.summary-user-fail-unexpected
+, tr.summary-row-first  td.summary-user-fail-unexpected
+, tr.summary-row-last   td.summary-user-fail-unexpected
+, tr.summary-row-single td.summary-user-fail-unexpected
+{ 
     width: 60pt;
     text-align: center;
     background-color: yellow;
@@ -274,146 +328,147 @@ tr.summary-row              td.summary-user-fail-unexpected
     border: 2px solid black; 
     padding-left: 2pt;
     padding-right: 2pt;
-    }
-
-tr.summary-row              td.summary-fail-unexpected-new
-    , tr.summary-row-first  td.summary-fail-unexpected-new
-    , tr.summary-row-last   td.summary-fail-unexpected-new
-    , tr.summary-row-single td.summary-fail-unexpected-new
-
-, tr.detail-row             td.detail-fail-unexpected-new
-    , tr.detail-row-first   td.detail-fail-unexpected-new
-    , tr.detail-row-last    td.detail-fail-unexpected-new
-    , tr.detail-row-single  td.detail-fail-unexpected-new 
-    { 
+}
+
+  tr.summary-row        td.summary-fail-unexpected-new
+, tr.summary-row-first  td.summary-fail-unexpected-new
+, tr.summary-row-last   td.summary-fail-unexpected-new
+, tr.summary-row-single td.summary-fail-unexpected-new
+
+, tr.library-row        td.library-fail-unexpected-new
+, tr.library-row-first  td.library-fail-unexpected-new
+, tr.library-row-last   td.library-fail-unexpected-new
+, tr.library-row-single td.library-fail-unexpected-new 
+{ 
     width: 60pt;
     text-align: center;
     background-color: yellow;
     color: black;
     border: 2px solid black; 
-    }
+}
 
 /* Detailed */
 
-.detail-conf-problem
-    {
+.library-conf-problem
+{
     font-size: 70%;
     font-weight: normal;
-    }
+}
 
-div.detail-toc
-    { 
+div.library-toc
+{ 
     margin: 5pt;
-    }
+}
 
 
-li.detail-toc-entry
-    { 
+li.library-toc-entry
+{ 
     margin-left: 5pt;
     list-style-type: square;
-    }
+}
 
 
-div.detail-footer
-    { 
+div.library-footer
+{ 
     margin: 5px;
-    }
+}
 
 
-table.detail-table td.test-name
-    {
+table.library-table td.test-name
+{
     width: 150pt;
     padding-left: 6pt;
     padding-right: 6pt;
     border-right: 0;
     border-top: 1px solid gray;
     border-bottom: 1px solid gray;
-    }
+}
 
-table.detail-table td.test-type
-    {
+table.library-table td.test-type
+{
     padding-right: 5px;
     border-left: 0;
     border-right: 0;
     border-top: 1px solid gray;
     border-bottom: 1px solid gray;
     text-align: right;
-    }
+}
 
-tr.detail-row td.detail-fail-unexpected
-    , tr.detail-row-first td.detail-fail-unexpected
-    , tr.detail-row-last td.detail-fail-unexpected
-    , tr.detail-row-single td.detail-fail-unexpected
-    { 
+  tr.library-row        td.library-fail-unexpected
+, tr.library-row-first  td.library-fail-unexpected
+, tr.library-row-last   td.library-fail-unexpected
+, tr.library-row-single td.library-fail-unexpected
+{ 
     width: 60pt;
     text-align: center;
     background-color: red;
     font-weight: bold;
     color: black;
     border: 2px solid black; 
-    }
+}
 
-td.detail-user-fail-expectected
-    { 
+td.library-user-fail-expectected
+{ 
     width: 60pt;
     text-align: center;
     background-color: yellow;
     color: black;
     border: 0px solid black; 
-    }
+}
 
-table.detail-library-notes
-    {
+table.library-library-notes
+{
     background-color: LemonChiffon;
     width: 640px;
     margin-left: 5px;
     margin-right: 5px; 
-    }
+}
 
-tr.detail-library-note
-    {
-    }
+tr.library-library-note
+{
+}
 
 div.note
-    {
+{
     padding: 3pt;
-    }
+}
+
 
 span.note-header
-    {
+{
     font-weight: bold;
-    }
+}
 
 /* Log */
 
 div.log-test-title
-    {
+{
     font-size: 1.5em;
     font-weight: bold;
     border-bottom: 1px solid black;
-    }
+}
 
 div.notes-title
-    {
+{
     font-weight: bold;
-    background-color:#FFFFCC;
-    }
+    background-color: #ffffcc;
+}
 
 div.notes
-    {
+{
     padding: 3pt;
-    background-color:#ffffcc;
-    }
+    background-color: #ffffcc;
+}
 
 div.notes-title
-    {
+{
     font-weight: bold;
-    }
+}
 
 div.log-compiler-output-title
-    {
+{
     font-weight: bold;
-    }
+}
 
 div.log-linker-output-title
 {
@@ -424,23 +479,3 @@ div.log-run-output-title
 {
   font-weight: bold;
 }
-
-/* Issues page */
-
-span.issue-new
-    {
-    border: solid 1px;
-    background-color: yellow;
-    padding-left: 5pt;
-    padding-right: 5pt;
-    margin-right: 2pt;
-    }
-
-span.issue
-    {
-    border: solid 1px;
-    background-color: red;
-    padding-left: 5pt;
-    padding-right: 5pt;
-    margin-right: 2pt;
-    }

+ 74 - 0
tools/regression/xsl_reports/xsl/html/summary_developer_legend.html

@@ -0,0 +1,74 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+<div class="legend">
+<table border="0" summary="report description">
+<tr>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="success legend">
+                    <tr class="summary-row-single"><td class="summary-expected">OK</td></tr>
+                 </table>
+            </td>
+            <td class="legend-item">
+                All expected tests pass.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected pass legend">
+                    <tr class="summary-row-single"><td class="summary-success-unexpected">OK</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                All expected tests pass, and some other tests that were expected to fail 
+                unexpectedly pass as well.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected new fail legend">
+                    <tr class="summary-row-single"><td class="summary-fail-unexpected-new">fail</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                There are some failures on the newly added tests/compiler(s).
+            </td>
+        </tr>
+    </table>
+    </td>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected fail legend">
+                    <tr class="summary-row-single"><td class="summary-fail-unexpected">broken</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                Tests that the library author expects to pass are currently failing.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unusable legend">
+                    <tr class="summary-row-single"><td class="summary-unusable">n/a</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                The library author marked it as unusable on particular platform/toolset.
+            </td>
+        </tr>
+    </table>
+    </td>
+</tr>
+</table>
+</div>

+ 64 - 0
tools/regression/xsl_reports/xsl/html/summary_user_legend.html

@@ -0,0 +1,64 @@
+<!--
+
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+<div class="legend">
+<table border="0" summary="report description">
+<tr>
+    <td>
+    <table border="0" summary="legend">
+        <tr>
+            <td>
+                <table width="100%" summary="success legend">
+                    <tr class="summary-row-single"><td class="summary-user-success">&#160;</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                All library tests are passing.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="expected fail legend">
+                    <tr class="summary-row-single"><td class="summary-user-fail-expected">details</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                There are some known failures in the tests, click on the link to see the details.
+            </td>
+        </tr>
+    </table>
+    </td>
+    <td>
+    <table border="0" summary="legend" ID="Table1">
+        <tr>
+            <td>
+                <table width="100%" summary="unexpected fail legend">
+                    <tr class="summary-row-single"><td class="summary-user-fail-unexpected">unexp.</td></tr>
+                </table>
+            </td>
+            <td class="legend-item">
+                Some tests that the library author expects to pass are currently failing,
+                click on the link to see the details.
+            </td>
+        </tr>
+        <tr>
+            <td>
+                <table width="100%" summary="unusable legend">
+                    <tr class="summary-row-single"><td class="summary-unusable">n/a</td></tr>
+                 </table>
+            </td>
+            <td class="legend-item">
+                The library author marked it as unusable on particular platform/toolset.
+            </td>
+        </tr>
+    </table>
+    </td>
+</tr>
+</table>
+</div>

+ 204 - 172
tools/regression/xsl_reports/xsl/issues_page.xsl

@@ -1,179 +1,211 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
- (C) Copyright MetaCommunications, Inc. 2003.
-
- Permission to use, copy, modify, distribute and sell this software
- and its documentation for any purpose is hereby granted without fee, 
- provided that the above copyright notice appears in all copies and 
- that both the copyright notice and this permission notice appear in 
- supporting documentation. No representations are made about the 
- suitability of this software for any purpose. It is provided "as is" 
- without express or implied warranty.
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
 
 -->
 
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:exsl="http://exslt.org/common"
-  xmlns:func="http://exslt.org/functions"
-  xmlns:meta="http://www.meta-comm.com"
-  xmlns:set="http://exslt.org/sets"
-  extension-element-prefixes="func"
-  version="1.0">
-
-  <xsl:import href="common.xsl"/>
-
-  <xsl:output method="html" 
-    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
-    encoding="utf-8" 
-    indent="yes"
-    />
-
-
-  <xsl:param name="links_file"/>
-  <xsl:param name="mode"/>
-  <xsl:param name="source"/>
-  <xsl:param name="run_date"/>
-  <xsl:param name="comment_file"/>
-  <xsl:param name="expected_results_file"/>
-  <xsl:param name="explicit_markup_file"/>
-
-  <!-- the author-specified expected test results -->
-  <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
-  <xsl:variable name="expected_results" select="document( $expected_results_file )" />
- 
-  <!-- necessary indexes -->
-  <xsl:key 
-    name="test_name_key" 
-    match="test-log" 
-    use="concat( @library, '@', @test-name )"/>
-                  <xsl:key 
-                      name="a" 
-                      match="." 
-                      use="concat( @library, '@', @test-name )"/>
-
-  <xsl:key 
-    name="library_key" 
-    match="test-log" 
-    use="@library"/>
-  <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
-
-  <!-- toolsets -->
-
-  <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
-  <xsl:variable name="required_toolset_names" select="$explicit_markup//mark-toolset[ @status='required' ]/@name"/>
-   <!-- libraries -->
-  <xsl:variable name="libraries" select="//test-log[ @library != '' and generate-id(.) = generate-id( key('library_key',@library)[1] )  ]/@library"/>
-
-  <xsl:variable name="unexpected_test_cases" select="//test-log[ @status='unexpected' and @result='fail' and @toolset = $required_toolset_names]"/>
-
-  <func:function name="meta:get_library_tests">
-      <xsl:param name="tests"/>
-      <xsl:param name="library"/>
-      
-      <xsl:variable name="a">                  
-          <xsl:for-each select="$tests[ @library=$library ]">
-              <xsl:sort select="@test-name" order="ascending"/>
-              <xsl:copy-of select="."/>
-          </xsl:for-each>
-      </xsl:variable>
-      <func:result select="exsl:node-set( $a )/*"/>
-  </func:function>
-
-
-  <xsl:template match="/">
-      <html>
-          <head>
-              <link rel="stylesheet" type="text/css" href="master.css" title="master" />
-              <title>Boost regression - unresolved issues: <xsl:value-of select="$source"/></title>
-          </head>
-          <body>
-              <!-- header -->
-              <div>
-                <table border="0">
-                  <tr>
-                    <td><img border="0" src="../../c++boost.gif" width="277" height="86" alt="Boost logo"></img></td>
-                    <td>
-                      <h1 class="page-title">
-                        <xsl:text>Unresolved Issues: </xsl:text>
-                        <xsl:value-of select="$source"/>
-                      </h1>
-
-                      <b>Report Time: </b> <xsl:value-of select="$run_date"/>
-                    </td>
-                  </tr>
-                </table>
-                <table border="0" class="header-table">
-                  <tr>
-                    <td class="header-item">Purpose</td>
-                    <td class="header-item-content">
-                      Provides a list of current unresolved test failures. 
-                    </td>
-                  </tr>
-                </table>
-              </div>
-
-              <table>
-                  <xsl:for-each select="$libraries">
-                      <xsl:sort select="." order="ascending"/>
-                      <xsl:variable name="library" select="."/>
-                  
-                      <xsl:variable name="library_tests" select="meta:get_library_tests( $unexpected_test_cases, $library )"/>
-                      <xsl:if test="count( $library_tests ) > 0">
-                          <xsl:variable name="library_test_names" select="set:distinct( $library_tests/@test-name )"/>
-
-                          <tr>
-                              <td colspan="2">
-                                  <div class="library-name">
-                                    <a href="developer_result_page.html#{$library}"><xsl:value-of select="$library"/></a>
-                                  </div>
-                              </td>
-                          </tr>
-                          
-                          <xsl:for-each select="$library_test_names">
-                              <xsl:sort select="." order="ascending"/>
-                              <xsl:variable name="test_name" select="."/>
-                              
-                              <xsl:variable name="unexpected_toolsets" select="$library_tests[ @test-name = $test_name and not (meta:is_unusable( $explicit_markup, $library, @toolset )) ]/@toolset"/>
-                              
-                              <xsl:if test="count( $unexpected_toolsets ) > 0">
-                                  <xsl:variable name="test_program"  select="$library_tests[@test-name = $test_name]/@test-program"/>
-                                  <tr>
-                                      <td class="test-name">
-                                          <a href="../../{$test_program}" class="test-link">
-                                              <xsl:value-of select="$test_name"/>
-                                          </a>
-                                      </td>
-                                      <td>
-                                          <xsl:for-each select="$unexpected_toolsets">
-                                              <xsl:sort select="." order="ascending"/>
-                                              <xsl:variable name="toolset" select="."/>
-                                              <xsl:variable name="test_result" select="$library_tests[@test-name = $test_name and @toolset = $toolset]"/>
-                                              <xsl:variable name="log_link" select="meta:output_file_path( $test_result/@target-directory )"/>
-                                              <xsl:variable name="class">
-                                                  <xsl:choose>
-                                                      <xsl:when test="$test_result/@is-new = 'yes'">
-                                                           <xsl:text>issue-new</xsl:text>
-                                                      </xsl:when>
-                                                      <xsl:otherwise>
-                                                           <xsl:text>issue</xsl:text>
-                                                      </xsl:otherwise>
-                                                  </xsl:choose>
-                                              </xsl:variable>
-                                              <span class="{$class}">
-                                                  <a href="{$log_link}" class="log-link">
-                                                      <xsl:value-of select="."/>
-                                                  </a>
-                                              </span>
-                                          </xsl:for-each>
-                                      </td>
-                                  </tr>
-                                  </xsl:if>
-                              </xsl:for-each>
-                          </xsl:if>
-                      </xsl:for-each>
-              </table>
-          </body>
-      </html>
-  </xsl:template>
+<xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:exsl="http://exslt.org/common"
+    xmlns:func="http://exslt.org/functions"
+    xmlns:meta="http://www.meta-comm.com"
+    xmlns:set="http://exslt.org/sets"
+    extension-element-prefixes="func exsl"
+    version="1.0">
+
+    <xsl:import href="common.xsl"/>
+
+    <xsl:output method="html" 
+        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
+        encoding="utf-8" 
+        indent="yes"
+        />
+
+
+    <xsl:param name="links_file"/>
+    <xsl:param name="mode"/>
+    <xsl:param name="source"/>
+    <xsl:param name="run_date"/>
+    <xsl:param name="comment_file"/>
+    <xsl:param name="expected_results_file"/>
+    <xsl:param name="explicit_markup_file"/>
+
+    <!-- the author-specified expected test results -->
+    <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
+    <xsl:variable name="expected_results" select="document( $expected_results_file )" />
+     
+    <!-- necessary indexes -->
+    <xsl:key 
+        name="test_name_key" 
+        match="test-log" 
+        use="concat( @library, '@', @test-name )"/>
+                    <xsl:key 
+                        name="a" 
+                        match="." 
+                        use="concat( @library, '@', @test-name )"/>
+
+    <xsl:key 
+        name="library_key" 
+        match="test-log" 
+        use="@library"/>
+    <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
+
+    <!-- toolsets -->
+
+    <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
+    <xsl:variable name="required_toolset_names" select="$explicit_markup//mark-toolset[ @status='required' ]/@name"/>
+    <!-- libraries -->
+    <xsl:variable name="libraries" select="//test-log[ @library != '' and generate-id(.) = generate-id( key('library_key',@library)[1] )  ]/@library"/>
+
+    <xsl:variable name="unexpected_test_cases" select="//test-log[ @status='unexpected' and @result='fail' and @toolset = $required_toolset_names]"/>
+
+    <func:function name="meta:get_library_tests">
+        <xsl:param name="tests"/>
+        <xsl:param name="library"/>
+          
+        <xsl:variable name="a">                  
+            <xsl:for-each select="$tests[ @library=$library ]">
+                <xsl:sort select="@test-name" order="ascending"/>
+                <xsl:copy-of select="."/>
+            </xsl:for-each>
+        </xsl:variable>
+        <func:result select="exsl:node-set( $a )/*"/>
+    </func:function>
+
+
+    <xsl:template match="/">
+
+        <xsl:variable name="issues_list" select="'issues_.html'"/>
+
+        <!-- Issues page -->
+        <html>
+        <head>
+            <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            <title>Boost regression unresolved issues: <xsl:value-of select="$source"/></title>
+        </head>
+        <frameset cols="170px,*" frameborder="0" framespacing="0" border="0">
+        <frame name="tocframe" src="toc.html" scrolling="auto"/>
+        <frame name="docframe" src="{$issues_list}" scrolling="auto"/>
+        </frameset>
+        </html>
+
+        <!-- Issues list -->
+        <xsl:message>Writing document <xsl:value-of select="$issues_list"/></xsl:message>
+        
+        <exsl:document href="{$issues_list}"
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+
+            <html>
+            <head>
+                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            </head>
+            <body>
+
+                <h1 class="page-title">
+                    <xsl:text>Unresolved Issues: </xsl:text>
+                    <a class="hover-link" href="summary.html" target="_top"><xsl:value-of select="$source"/></a>
+                </h1>
+
+                <div class="report-info">
+                    <div>
+                        <b>Report Time: </b> <xsl:value-of select="$run_date"/>
+                    </div>
+                    <div>
+                        <b>Purpose: </b> Provides a list of current unresolved test failures. 
+                    </div>
+                </div>
+
+                <xsl:for-each select="$libraries">
+                    <xsl:sort select="." order="ascending"/>
+                    <xsl:variable name="library" select="."/>
+                
+                    <xsl:variable name="library_tests" select="meta:get_library_tests( $unexpected_test_cases, $library )"/>
+                    <xsl:if test="count( $library_tests ) > 0">
+                        <xsl:variable name="library_test_names" select="set:distinct( $library_tests/@test-name )"/>
+
+                        <h2>
+                            <a class="hover-link" href="{$library}.html" target="_top">
+                                <xsl:value-of select="$library"/>
+                            </a>
+                        </h2>
+                        
+                        <table border="0" cellspacing="0" cellpadding="0" class="library-table" summary="issues">
+                            <thead>
+                                <tr valign="middle">
+                                    <td class="head">test</td>
+                                    <td class="head">failures</td>
+                                </tr>
+                            </thead>
+
+                            <tbody>
+                            <xsl:for-each select="$library_test_names">
+                                <xsl:sort select="." order="ascending"/>
+                                <xsl:variable name="test_name" select="."/>
+                                
+                                <xsl:variable name="unexpected_toolsets" select="$library_tests[ @test-name = $test_name and not (meta:is_unusable( $explicit_markup, $library, @toolset )) ]/@toolset"/>
+                                
+                                <xsl:if test="count( $unexpected_toolsets ) > 0">
+                                    <xsl:variable name="test_program"  select="$library_tests[@test-name = $test_name]/@test-program"/>
+                                    <tr>
+                                        <td class="test-name">
+                                            <a href="../../{$test_program}" class="test-link">
+                                                <xsl:value-of select="$test_name"/>
+                                            </a>
+                                        </td>
+                                        <td>
+                                            <xsl:for-each select="$unexpected_toolsets">
+                                                <xsl:sort select="." order="ascending"/>
+                                                <xsl:variable name="toolset" select="."/>
+                                                <xsl:variable name="test_result" select="$library_tests[@test-name = $test_name and @toolset = $toolset]"/>
+                                                <xsl:variable name="log_link" select="meta:output_file_path( $test_result/@target-directory )"/>
+                                                <xsl:variable name="class">
+                                                    <xsl:choose>
+                                                        <xsl:when test="$test_result/@is-new = 'yes'">
+                                                            <xsl:text>library-fail-unexpected-new</xsl:text>
+                                                        </xsl:when>
+                                                        <xsl:otherwise>
+                                                            <xsl:text>library-fail-unexpected</xsl:text>
+                                                        </xsl:otherwise>
+                                                    </xsl:choose>
+                                                </xsl:variable>
+
+                                                <table summary="unexpected fail legend">
+                                                    <tr class="library-row-single">
+                                                        <td class="library-fail-unexpected">
+                                                            <a href="{$log_link}" class="log-link" target="_top">
+                                                                <xsl:value-of select="."/>
+                                                            </a>
+                                                        </td>
+                                                    </tr>
+                                                </table>
+
+                                            </xsl:for-each>
+                                        </td>
+                                    </tr>
+                                </xsl:if>
+                            </xsl:for-each>
+                            </tbody>
+
+                            </table>
+
+
+                        </xsl:if>
+                    </xsl:for-each>
+
+            <xsl:copy-of select="document( 'html/issues_legend.html' )"/>
+            <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
+
+            </body>
+            </html>
+        </exsl:document>  
+
+    </xsl:template>
 </xsl:stylesheet>

+ 124 - 174
tools/regression/xsl_reports/xsl/links_page.xsl

@@ -1,181 +1,131 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
-     (C) Copyright MetaCommunications, Inc. 2003.
-
-     Permission to use, copy, modify, distribute and sell this software
-     and its documentation for any purpose is hereby granted without fee, 
-     provided that the above copyright notice appears in all copies and 
-     that both the copyright notice and this permission notice appear in 
-     supporting documentation. No representations are made about the 
-     suitability of this software for any purpose. It is provided "as is" 
-     without express or implied warranty.
-
-     -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-  xmlns:func="http://exslt.org/functions"
-  xmlns:meta="http://www.meta-comm.com"
-  xmlns:exsl="http://exslt.org/common"
-  extension-element-prefixes="func exsl"
-  version="1.0">
-
-  <xsl:import href="common.xsl"/>
-
-  <xsl:output method="html" 
-    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
-     encoding="utf-8" 
-    indent="yes"
-    />
-
-
-
-  <xsl:param name="source"/>
-  <xsl:param name="run_date"/>
-  <xsl:param name="comment_file"/>
-  <xsl:param name="explicit_markup_file"/>
-
-  <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="master.css" title="master" />
-        <title>Boost regression - test run output: <xsl:value-of select="$source"/></title>
-      </head>
-      <body>
-        <div>
-          <table border="0">
-            <tr>
-              <td><img border="0" src="../../c++boost.gif" width="277" height="86" alt="Boost logo"></img></td>
-              <td>
-                <h1 class="page-title">
-                  <xsl:text>Regression Tests Log: </xsl:text>
-                  <xsl:value-of select="$source"/>
-                </h1>
-
-                <b>Report Time: </b> <xsl:value-of select="$run_date"/>
-                <xsl:if test="$comment_file != ''">
-                  <xsl:copy-of select="document( $comment_file )"/>
-                </xsl:if>
-              </td>
-            </tr>
-          </table>
-          <table border="0" class="header-table">
-            <tr>
-              <td class="header-item">Purpose</td>
-              <td class="header-item-content">
-                Provides notes,  compiler, linker and run output of the
-                regression tests. 
-                
-                This file is not being used any more.
-              </td>
-            </tr>
-          </table>
-        </div>
-        <div>
-          <xsl:apply-templates select="//test-log[@test-name != '' and @result = 'fail']"/>
-        </div>
-        <div>
-          <xsl:apply-templates select="//test-log[@test-name = '' and @result = 'fail']" />
-        </div>
-
-      </body>
-    </html>
-  </xsl:template>
-
-
-  <xsl:template match="test-log">
-    <xsl:variable name="document_path" select="meta:output_file_path( @target-directory )"/>
-
-    <xsl:message>Writing document <xsl:value-of select="$document_path"/></xsl:message>
-
-    <exsl:document href="{$document_path}" 
-      method="html" 
-      doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
-      encoding="utf-8"
-      indent="yes">
-
-      <html>
-        <xsl:variable name="component">
-          <xsl:choose>
-            <xsl:when test="@test-name != ''">
-              <div class="log-test-title">
-                <xsl:value-of select="concat( @library, ' - ', @test-name, ' / ', @toolset )"/>
-              </div>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="@target-dir"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
+
+-->
+
+<xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    xmlns:exsl="http://exslt.org/common"
+    xmlns:func="http://exslt.org/functions"
+    xmlns:meta="http://www.meta-comm.com"
+    extension-element-prefixes="func exsl"
+    version="1.0">
+
+    <xsl:import href="common.xsl"/>
+
+    <xsl:output method="html" 
+        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
+        encoding="utf-8" 
+        indent="yes"
+        />
+
+    <xsl:param name="source"/>
+    <xsl:param name="run_date"/>
+    <xsl:param name="comment_file"/>
+    <xsl:param name="explicit_markup_file"/>
+
+    <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
+
+    <xsl:template match="test-log">
+        <xsl:variable name="document_path" select="meta:output_file_path( @target-directory )"/>
+
+        <xsl:message>Writing document <xsl:value-of select="$document_path"/></xsl:message>
+
+        <exsl:document href="{$document_path}" 
+        method="html" 
+        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+        encoding="utf-8"
+        indent="yes">
+
+        <html>
+            <xsl:variable name="component">
+            <xsl:choose>
+                <xsl:when test="@test-name != ''">
+                <div class="log-test-title">
+                    <xsl:value-of select="concat( @library, ' - ', @test-name, ' / ', @toolset )"/>
+                </div>
+                </xsl:when>
+                <xsl:otherwise>
+                <xsl:value-of select="@target-dir"/>
+                </xsl:otherwise>
+            </xsl:choose>
+            </xsl:variable>
+            
+            <head>
+            <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            <title>Boost regression - test run output: <xsl:value-of select="$component"/></title>
+            </head>
+
+            <body>
+            <div>
+                <div class="log-test-title">
+                Boost regression - test run output: <xsl:value-of select="$component"/>
+            </div>
+            
+
+            <xsl:if test="notes/note">
+                <p>
+                <div class="notes-title">Notes</div>
+                <xsl:call-template name="show_notes">
+                    <xsl:with-param name="notes" select="notes/note"/>
+                    <xsl:with-param name="explicit_markup" select="$explicit_markup"/>
+                </xsl:call-template>
+                </p>
+            </xsl:if>
+              
+            <xsl:if test="compile">
+                <p>
+                <div class="log-compiler-output-title">Compiler output:</div>
+                <pre>
+                    <xsl:copy-of select="compile/node()"/>
+                </pre>
+                </p>
+            </xsl:if>
+              
+            <xsl:if test="link">
+                <p>
+                <div class="log-linker-output-title">Linker output:</div>
+                <pre>
+                    <xsl:copy-of select="link/node()"/>
+                </pre>
+                </p>
+            </xsl:if>
+
+            <xsl:if test="lib">
+                <p>
+                <div class="log-linker-output-title">Lib output:</div>
+                <p>
+                    See <a href="{meta:encode_path( lib/node() )}.html">
+                    <xsl:copy-of select="lib/node()"/>
+                    </a>
+                </p>
+                </p>
+            </xsl:if>
+              
+            <xsl:if test="run">
+                <p>
+                <div class="log-run-output-title">Run output:</div>
+                <pre>
+                    <xsl:copy-of select="run/node()"/>
+                </pre>
+                </p>
+            </xsl:if>
+              
+            </div>
+
+            <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
+
+            </body>
         
-        <head>
-          <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
-          <title>Boost regression - test run output: <xsl:value-of select="$component"/></title>
-        </head>
-
-        <body>
-          <div>
-            <div class="log-test-title">
-              Boost regression - test run output: <xsl:value-of select="$component"/>
-          </div>
-        
-
-          <xsl:if test="notes/note">
-            <p>
-              <div class="notes-title">Notes</div>
-              <xsl:call-template name="show_notes">
-                <xsl:with-param name="notes" select="notes/note"/>
-                <xsl:with-param name="explicit_markup" select="$explicit_markup"/>
-              </xsl:call-template>
-            </p>
-          </xsl:if>
-          
-          <xsl:if test="compile">
-            <p>
-              <div class="log-compiler-output-title">Compiler output:</div>
-              <pre>
-                <xsl:copy-of select="compile/node()"/>
-              </pre>
-            </p>
-          </xsl:if>
-          
-          <xsl:if test="link">
-            <p>
-              <div class="log-linker-output-title">Linker output:</div>
-              <pre>
-                <xsl:copy-of select="link/node()"/>
-              </pre>
-            </p>
-          </xsl:if>
-
-          <xsl:if test="lib">
-            <p>
-              <div class="log-linker-output-title">Lib output:</div>
-              <p>
-                See <a href="{meta:encode_path( lib/node() )}.html">
-                <xsl:copy-of select="lib/node()"/>
-                </a>
-              </p>
-            </p>
-          </xsl:if>
-          
-          <xsl:if test="run">
-            <p>
-              <div class="log-run-output-title">Run output:</div>
-              <pre>
-                <xsl:copy-of select="run/node()"/>
-              </pre>
-            </p>
-          </xsl:if>
-          
-        </div>
-      </body>
-    </html>
-  </exsl:document>  
-  </xsl:template>
-
+        </html>
+        </exsl:document>  
 
+    </xsl:template>
 
 </xsl:stylesheet>

+ 601 - 583
tools/regression/xsl_reports/xsl/result_page.xsl

@@ -1,624 +1,642 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
- (C) Copyright MetaCommunications, Inc. 2003.
-
- Permission to use, copy, modify, distribute and sell this software
- and its documentation for any purpose is hereby granted without fee, 
- provided that the above copyright notice appears in all copies and 
- that both the copyright notice and this permission notice appear in 
- supporting documentation. No representations are made about the 
- suitability of this software for any purpose. It is provided "as is" 
- without express or implied warranty.
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
 
 -->
 
 <xsl:stylesheet 
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-  xmlns:exsl="http://exslt.org/common"
-  xmlns:func="http://exslt.org/functions"
-  xmlns:meta="http://www.meta-comm.com"
-  extension-element-prefixes="func"
-  version="1.0">
-
-  <xsl:import href="common.xsl"/>
-
-  <xsl:output method="html" 
-    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
-    encoding="utf-8" 
-    indent="yes"
-    />
-
-
-  <xsl:param name="links_file"/>
-  <xsl:param name="mode"/>
-  <xsl:param name="source"/>
-  <xsl:param name="run_date"/>
-  <xsl:param name="comment_file"/>
-  <xsl:param name="expected_results_file"/>
-  <xsl:param name="explicit_markup_file"/>
-
-  <xsl:variable name="output_directory" select="'output'"/>
-
-  <!-- the author-specified expected test results -->
-  <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
-  <xsl:variable name="expected_results" select="document( $expected_results_file )" />
- 
-  <!-- necessary indexes -->
-  <xsl:key 
-    name="test_name_key" 
-    match="test-log" 
-    use="concat( @library, '&gt;@&lt;', @test-name )"/>
-  <xsl:key 
-    name="library_key" 
-    match="test-log" 
-    use="@library"/>
-  <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
-
-  <!-- toolsets -->
-
-  <xsl:variable name="not_ordered_toolsets" select="//test-log[ generate-id(.) = generate-id( key('toolset_key',@toolset)[1] ) and @toolset != '' ]/@toolset"/>
-
-  <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
-
-  <xsl:variable name="ordered_toolsets_fragment">
-    <xsl:call-template name="get_toolsets">
-      <xsl:with-param name="toolsets" select="$not_ordered_toolsets"/>
-      <xsl:with-param name="required_toolsets" select="$required_toolsets"/>
-    </xsl:call-template>
-  </xsl:variable>
-
-  <xsl:variable name="ordered_toolsets" select="exsl:node-set( $ordered_toolsets_fragment )"/>
-
-  <!-- libraries -->
-  <xsl:variable name="libraries" select="//test-log[ @library != '' and generate-id(.) = generate-id( key('library_key',@library)[1] )  ]/@library"/>
-
-  <xsl:template name="insert_toolsets_row">
-    <xsl:param name="library"/>
-    <xsl:param name="library_marks"/>
-    <xsl:param name="toolsets"/>
-    <tr valign="middle">
-      <td class="head" colspan="2">test / toolset</td>
-
-      <xsl:variable name="all_library_notes" select="$library_marks/note"/>
-      <xsl:for-each select="$toolsets/toolset">
-        <xsl:variable name="toolset" select="@toolset"/>
-
-        <xsl:variable name="class">
-          <xsl:choose>
-            <xsl:when test="@required='yes'">
-              <xsl:text>required-toolset-name</xsl:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:text>toolset-name</xsl:text>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:variable>
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    xmlns:exsl="http://exslt.org/common"
+    xmlns:func="http://exslt.org/functions"
+    xmlns:meta="http://www.meta-comm.com"
+    extension-element-prefixes="func exsl"
+    version="1.0">
+
+    <xsl:import href="common.xsl"/>
+
+    <xsl:output method="html" 
+        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
+        encoding="utf-8" 
+        indent="yes"
+        />
+
+    <xsl:param name="links_file"/>
+    <xsl:param name="mode"/>
+    <xsl:param name="source"/>
+    <xsl:param name="run_date"/>
+    <xsl:param name="comment_file"/>
+    <xsl:param name="expected_results_file"/>
+    <xsl:param name="explicit_markup_file"/>
+
+    <!-- the author-specified expected test results -->
+    <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
+    <xsl:variable name="expected_results" select="document( $expected_results_file )" />
+
+    <xsl:variable name="alternate_mode">
+        <xsl:choose>
+        <xsl:when test="$mode='user'">developer</xsl:when>
+        <xsl:otherwise>user</xsl:otherwise>
+        </xsl:choose>
+    </xsl:variable>
+     
+    <!-- necessary indexes -->
+    <xsl:key 
+        name="test_name_key" 
+        match="test-log" 
+        use="concat( @library, '&gt;@&lt;', @test-name )"/>
+    <xsl:key 
+        name="library_key" 
+        match="test-log" 
+        use="@library"/>
+    <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
+
+    <!-- toolsets -->
+
+    <xsl:variable name="not_ordered_toolsets" select="//test-log[ generate-id(.) = generate-id( key('toolset_key',@toolset)[1] ) and @toolset != '' ]/@toolset"/>
+
+    <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
+
+    <xsl:variable name="ordered_toolsets_fragment">
+        <xsl:call-template name="get_toolsets">
+        <xsl:with-param name="toolsets" select="$not_ordered_toolsets"/>
+        <xsl:with-param name="required_toolsets" select="$required_toolsets"/>
+        </xsl:call-template>
+    </xsl:variable>
 
-        <xsl:variable name="toolset_notes_fragment">
-            <xsl:for-each select="$all_library_notes">
-                <xsl:if test="../@toolset=$toolset or ( ../toolset/@name=$toolset or ../toolset/@name = '*' )">
-                    <note index="{position()}"/>
-                </xsl:if>
-            </xsl:for-each>
-        </xsl:variable>
+    <xsl:variable name="ordered_toolsets" select="exsl:node-set( $ordered_toolsets_fragment )"/>
+
+    <!-- libraries -->
+    <xsl:variable name="libraries" select="//test-log[ @library != '' and generate-id(.) = generate-id( key('library_key',@library)[1] )  ]/@library"/>
+
+    <xsl:template name="insert_toolsets_row">
+        <xsl:param name="library"/>
+        <xsl:param name="library_marks"/>
+        <xsl:param name="toolsets"/>
+        <tr valign="middle">
+        <td class="head" colspan="2">test / toolset</td>
+
+        <xsl:variable name="all_library_notes" select="$library_marks/note"/>
+        <xsl:for-each select="$toolsets/toolset">
+            <xsl:variable name="toolset" select="@toolset"/>
+
+            <xsl:variable name="class">
+            <xsl:choose>
+                <xsl:when test="@required='yes'">
+                    <xsl:text>required-toolset-name</xsl:text>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:text>toolset-name</xsl:text>
+                </xsl:otherwise>
+            </xsl:choose>
+            </xsl:variable>
+
+            <xsl:variable name="toolset_notes_fragment">
+                <xsl:for-each select="$all_library_notes">
+                    <xsl:if test="../@toolset=$toolset or ( ../toolset/@name=$toolset or ../toolset/@name = '*' )">
+                        <note index="{position()}"/>
+                    </xsl:if>
+                </xsl:for-each>
+            </xsl:variable>
+
+            <xsl:variable name="toolset_notes" select="exsl:node-set( $toolset_notes_fragment )/*"/>
+
+            <td class="{$class}"><xsl:value-of select="$toolset"/>
+            <xsl:if test="count( $toolset_notes ) > 0">
+                <span class="super">
+                    <xsl:for-each select="$toolset_notes">
+                        <xsl:variable name="note_index" select="@index"/>
+                        <xsl:if test="generate-id( . ) != generate-id( $toolset_notes[1] )">, </xsl:if>
+                        <a href="#{$library}-note-{$note_index}" title="Note {$note_index}">
+                            <xsl:value-of select="$note_index"/>
+                        </a>
+                    </xsl:for-each>
+                </span>
+            </xsl:if>
+            </td>
+        </xsl:for-each>
 
-        <xsl:variable name="toolset_notes" select="exsl:node-set( $toolset_notes_fragment )/*"/>
-
-        <td class="{$class}"><xsl:value-of select="$toolset"/>
-          <xsl:if test="count( $toolset_notes ) > 0">
-              <span class="super">
-                  <xsl:for-each select="$toolset_notes">
-                      <xsl:variable name="note_index" select="@index"/>
-                      <xsl:if test="generate-id( . ) != generate-id( $toolset_notes[1] )">, </xsl:if>
-                      <a href="#{$library}-note-{$note_index}" title="Note {$note_index}"><xsl:value-of select="$note_index"/></a>
-                  </xsl:for-each>
-              </span>
-          </xsl:if>
+        <td class="head">toolset / test</td>
+        </tr>
+    </xsl:template>
+
+    <xsl:template name="test_type_col">
+        <td class="test-type">
+        <a href="../../status/compiler_status.html#Understanding" class="legend-link">
+            <xsl:variable name="test_type" select="./@test-type"/>
+            <xsl:choose>
+            <xsl:when test="$test_type='run_pyd'">      <xsl:text>r</xsl:text>  </xsl:when>
+            <xsl:when test="$test_type='run'">          <xsl:text>r</xsl:text>  </xsl:when>
+            <xsl:when test="$test_type='run_fail'">     <xsl:text>rf</xsl:text> </xsl:when>
+            <xsl:when test="$test_type='compile'">      <xsl:text>c</xsl:text>  </xsl:when>
+            <xsl:when test="$test_type='compile_fail'"> <xsl:text>cf</xsl:text> </xsl:when>
+            </xsl:choose>
+        </a>
         </td>
-      </xsl:for-each>
+    </xsl:template>
 
-      <td class="head">toolset / test</td>
-    </tr>
-  </xsl:template>
 
-  <xsl:template name="test_type_col">
-    <td class="test-type">
-      <a href="../../status/compiler_status.html#Understanding" class="legend-link">
-        <xsl:variable name="test_type" select="./@test-type"/>
-        <xsl:choose>
-          <xsl:when test="$test_type='run_pyd'">
-            <xsl:text>r</xsl:text>
-          </xsl:when>
-          <xsl:when test="$test_type='run'">
-            <xsl:text>r</xsl:text>
-          </xsl:when>
-          <xsl:when test="$test_type='run_fail'">
-            <xsl:text>rf</xsl:text>
-          </xsl:when>
-          <xsl:when test="$test_type='compile'">
-            <xsl:text>c</xsl:text>
-          </xsl:when>
-          <xsl:when test="$test_type='compile_fail'">
-            <xsl:text>cf</xsl:text>
-          </xsl:when>
-        </xsl:choose>
-      </a>
-    </td>
-  </xsl:template>
-
-
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="master.css" title="master" />
-        <title>Boost regression - <xsl:value-of select="$mode"/> detailed report: <xsl:value-of select="$source"/></title>
-      </head>
-      <body>
+    <xsl:template match="/">
 
-        <!-- header -->
+        <xsl:variable name="index_path" select="'index_.html'"/>
+        
+        <!-- Index page -->
+        <head>
+            <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            <title>Boost regression: <xsl:value-of select="$source"/></title>
+        </head>
+        <frameset cols="170px,*" frameborder="0" framespacing="0" border="0">
+            <frame name="tocframe" src="toc.html" scrolling="auto"/>
+            <frame name="docframe" src="{$index_path}" scrolling="auto"/>
+        </frameset>
+
+        <!-- Index content -->
+        <xsl:message>Writing document <xsl:value-of select="$index_path"/></xsl:message>
+
+        <exsl:document href="{$index_path}" 
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+
+            <html>
+            <head>
+                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            </head>
+            <body>
+
+                <img border="0" src="../../c++boost.gif" width="277" height="86" align="right" alt="Boost logo"></img>
 
-        <xsl:variable name="legend">
-          <xsl:choose>
-            <xsl:when test="$mode='user'">
-              <tr>
-                <td class="header-item">Legend</td>
-                <td class="header-item-content">
-
-                  <table border="0" cellspacing="0" cellpadding="0" class="legend-table" summary="legend table">
-                    <tr>
-                      <td><table width="100%" summary="success legend"><tr class="detail-row-single"><td class="detail-user-success">pass</td></tr></table></td>
-                      <td class="legend-item">
-                        the test passes
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="fail legend"><tr><td class="detail-user-fail-expected">fail</td></tr></table></td>
-                      <td class="legend-item">
-                        a known test failure; click on the link to see the log
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unexpected fail legend"><tr><td class="detail-user-fail-unexpected">unexp.</td></tr></table></td>
-                      <td class="legend-item">
-                        the test is known to pass, but is currently failing; 
-                        click on the link to see the log
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unusable legend"><tr><td class="detail-unusable">...</td></tr></table></td>
-                      <td class="legend-item">
-                        the library author marked it as unusable on particular platform/toolset
-                      </td>
-                    </tr>
-                  </table>
-
-                </td>
-              </tr>
-            </xsl:when>
-            <xsl:when test="$mode='developer'">
-              <tr>
-                <td class="header-item">Legend</td>
-                <td class="header-item-content">
-                  <table border="0" class="legend-table" summary="legend">
-                    <tr>
-                      <td><table width="100%" summary="success legend"><tr class="detail-row-single"><td class="detail-success-expected">pass</td></tr></table></td>
-                      <td class="legend-item">
-                        success
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unexpected pass legend"><tr class="detail-row-single"><td class="detail-success-unexpected">pass</td></tr></table></td>
-                      <td class="legend-item">
-                        unexpected success
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="expected fail legend"><tr class="detail-row-single"><td class="detail-fail-expected">fail</td></tr></table></td>
-                      <td class="legend-item">
-                        expected failure
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unexpected new fail legend"><tr class="detail-row-single"><td class="detail-fail-unexpected-new">fail</td></tr></table></td>
-                      <td class="legend-item">
-                        failure on a newly added test/compiler
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unexpected fail legend"><tr class="detail-row-single"><td class="detail-fail-unexpected">fail</td></tr></table></td>
-                      <td class="legend-item">
-                        unexpected failure
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%" summary="unusable legend"><tr class="detail-row-single"><td class="detail-unusable">...</td></tr></table></td>
-                      <td class="legend-item">
-                        the library author marked it as unusable on particular platform/toolset
-                      </td>
-                    </tr>
-                  </table>
-                </td>
-              </tr>
-            </xsl:when>
-          </xsl:choose>
-        </xsl:variable>
+                <h1 class="page-title">
+                    <xsl:value-of select="$mode"/>
+                    <xsl:text> report: </xsl:text>
+                    <a class="hover-link" href="summary.html" target="_top"><xsl:value-of select="$source"/></a>
+                </h1>                            
+
+                <div class="report-info">
+                    <div>
+                        <b>Report Time: </b> <xsl:value-of select="$run_date"/>
+                    </div>
+                      
+                    <div>
+                        <b>Purpose: </b>
+                        <xsl:choose>
+                            <xsl:when test="$mode='user'">
+                                The purpose of this report is to help a user to find out whether a particular library 
+                                works on the particular compiler(s). For CVS "health report", see 
+                                <a href="../{$alternate_mode}/index.html" target="_top">developer summary</a>.
+                            </xsl:when>
+                            <xsl:when test="$mode='developer'">
+                                Provides Boost developers with visual indication of the CVS "health". For user-level 
+                                report, see <a href="../{$alternate_mode}/index.html" target="_top">user summary</a>.
+                            </xsl:when>
+                        </xsl:choose>
+                    </div>
+                </div>
+                              
+                <div class="comment">
+                    <xsl:if test="$comment_file != ''">
+                        <xsl:copy-of select="document( $comment_file )"/>
+                    </xsl:if>
+                </div>
+
+            </body>
+            </html>
+        </exsl:document>  
+
+              
+        <xsl:variable name="multiple.libraries" select="count( $libraries ) > 1"/>
+
+        <!-- TOC -->
+        <xsl:if test="$multiple.libraries">
+            
+            <xsl:variable name="toc_path" select="'toc.html'"/>
+            <xsl:message>Writing document <xsl:value-of select="$toc_path"/></xsl:message>
+
+            <exsl:document href="{$toc_path}" 
+                method="html" 
+                doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+                encoding="utf-8"
+                indent="yes">
+
+            <html>
+            <head>
+                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            </head>
+            <body class="{$mode}-toc">
+                <div class="toc-header-entry">
+                    <a href="index.html" class="toc-entry" target="_top">Report info</a>
+                </div>
+                <div class="toc-header-entry">
+                    <a href="summary.html" class="toc-entry" target="_top">Summary</a>
+                </div>
+                
+                <xsl:if test="$mode='developer'">
+                    <div class="toc-header-entry">
+                        <a href="issues.html" class="toc-entry" target="_top">Unresolved issues</a>
+                    </div>
+                </xsl:if>
+                <hr/>
+                  
+                <xsl:for-each select="$libraries">
+                    <xsl:sort select="." order="ascending" />
+                    <div class="toc-entry">
+                        <a href="{.}.html" class="toc-entry" target="_top">
+                            <xsl:value-of select="."/>
+                        </a>
+                    </div>
+                </xsl:for-each>
+            </body>
+            </html>
+            
+            </exsl:document>  
+        </xsl:if> 
+         
+        <!-- Libraries -->
+        <xsl:for-each select="$libraries">
+            <xsl:sort select="." order="ascending" />
+            <xsl:variable name="library" select="." />
+            
+            <xsl:variable name="library_results" select="concat( $library, '_.html' )"/>
+            <xsl:variable name="library_page" select="concat( $library, '.html' )"/>
+
+            <!-- Library page -->
+            <xsl:message>Writing document <xsl:value-of select="$library_page"/></xsl:message>
+            
+            <exsl:document href="{$library_page}"
+                method="html" 
+                doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+                encoding="utf-8"
+                indent="yes">
+
+                <html>
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                    <title>Boost regression: <xsl:value-of select="$library"/>/<xsl:value-of select="$source"/></title>
+                </head>
+                <frameset cols="170px,*" frameborder="0" framespacing="0" border="0">
+                <frame name="tocframe" src="toc.html" scrolling="auto"/>
+                <frame name="docframe" src="{$library_results}" scrolling="auto"/>
+                </frameset>
+                </html>
+            </exsl:document>  
+
+            <!-- Library results frame -->
+            <xsl:message>Writing document <xsl:value-of select="$library_results"/></xsl:message>
+            
+            <exsl:document href="{$library_results}"
+                method="html" 
+                doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+                encoding="utf-8"
+                indent="yes">
+
+                <html>
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                </head>
+                  
+                <body>
 
-        <div>
-          <table border="0" summary="report header">
-            <tr>
-              <td><img border="0" src="../../c++boost.gif" width="277" height="86" alt="Boost logo"></img></td>
-              <td>
                 <h1 class="page-title">
-                  <xsl:value-of select="$mode"/>
-                  <xsl:text> detailed report: </xsl:text>
-                  <xsl:value-of select="$source"/>
+                    <a class="hover-link" name="{$library}" href="../../libs/{$library}">
+                        <xsl:value-of select="$library" />
+                    </a>
+                    <xsl:text>/</xsl:text>
+                    <a class="hover-link" href="summary.html" target="_top"><xsl:value-of select="$source"/></a>
                 </h1>
 
-                <b>Report Time: </b> <xsl:value-of select="$run_date"/>
-                <xsl:if test="$comment_file != ''">
-                  <xsl:copy-of select="document( $comment_file )"/>
+                <div class="report-info">
+                    <b>Report Time: </b> <xsl:value-of select="$run_date"/>
+                </div>
+
+                <xsl:variable name="library_marks" select="$explicit_markup//library[ @name = $library ]/mark-unusable[ toolset/@name = $not_ordered_toolsets ]"/>
+
+                <table border="0" cellspacing="0" cellpadding="0" class="library-table" summary="library results">
+
+                    <thead>
+                    <xsl:call-template name="insert_toolsets_row">
+                        <xsl:with-param name="library_marks" select="$library_marks"/>
+                        <xsl:with-param name="library" select="$library"/>
+                        <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
+                    </xsl:call-template>
+                    </thead>
+                    <tfoot>
+                    <xsl:call-template name="insert_toolsets_row">
+                        <xsl:with-param name="library_marks" select="$library_marks"/>
+                        <xsl:with-param name="library" select="$library"/>
+                        <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
+                    </xsl:call-template>
+                    </tfoot>
+
+                    <tbody>
+                        <!-- lib_tests = test_log* -->
+                        <xsl:variable name="lib_tests" select="//test-log[@library = $library]" /> 
+
+                        <!-- lib_unique_test_names = test_log* -->
+                        <xsl:variable name="lib_unique_test_names" 
+                            select="$lib_tests[ generate-id(.) = generate-id( key('test_name_key', concat( @library, '&gt;@&lt;', @test-name ) ) ) ]" />
+
+                        <xsl:variable name="lib_corner_case_tests_markup" select="$explicit_markup//library[ @name = $library ]/test[ @corner-case='yes' ]"/>
+                        
+                        <xsl:variable name="lib_general_tests" 
+                            select="meta:order_tests_by_name( $lib_unique_test_names[ not( @test-name = $lib_corner_case_tests_markup/@name ) ]  )"/>
+
+
+                        <xsl:variable name="lib_corner_case_tests" select="meta:order_tests_by_name( $lib_unique_test_names[ @test-name = $lib_corner_case_tests_markup/@name ] ) " />
+
+                        <!-- general tests section -->
+
+                        <xsl:call-template name="insert_test_section">
+                            <xsl:with-param name="library" select="$library"/>
+                            <xsl:with-param name="section_tests" select="$lib_general_tests"/>
+                            <xsl:with-param name="lib_tests" select="$lib_tests"/>
+                            <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
+                        </xsl:call-template>
+
+                        <!-- corner-case tests section -->
+
+                        <xsl:if test="count( $lib_corner_case_tests ) > 0">
+                            <tr>
+                                <!--<td colspan="2">&#160;</td>                  -->
+                                <td class="library-corner-case-header" colspan="{count($ordered_toolsets) + 3 }" align="center">Corner-case tests</td>
+                                <!--<td>&#160;</td>-->
+                            </tr>
+
+                        <xsl:call-template name="insert_test_section">
+                            <xsl:with-param name="library" select="$library"/>
+                            <xsl:with-param name="section_tests" select="$lib_corner_case_tests"/>
+                            <xsl:with-param name="lib_tests" select="$lib_tests"/>
+                            <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
+                        </xsl:call-template>
+                        
+                    </xsl:if>
+
+                    </tbody>
+                </table>
+                <xsl:if test="count( $library_marks/note ) > 0 ">
+                    <table border="0" cellpadding="0" cellspacing="0" class="library-library-notes" summary="library notes">
+                    <xsl:for-each select="$library_marks/note">
+                        <tr class="library-library-note">
+                        <td valign="top" width="3em">
+                            <a name="{$library}-note-{position()}">
+                            <span class="super"><xsl:value-of select="position()"/></span>
+                            </a>
+                        </td>
+                        <td>
+                            <xsl:variable name="refid" select="@refid"/>
+                            <xsl:call-template name="show_note">
+                                <xsl:with-param name="note" select="." />
+                                <xsl:with-param name="reference" select="$explicit_markup//note[ $refid = @id ]"/>
+                            </xsl:call-template>
+                        </td>
+                        </tr>
+                    </xsl:for-each>
+                    </table>
                 </xsl:if>
-              </td>
-            </tr>
-          </table>
-          <table border="0" class="header-table" summary="report description" >
-            <tr>
-              <td class="header-item">Purpose</td>
-              <td class="header-item-content">
-                Provides detailed explanation of the results reported on the
-                <a href="{$mode}_summary_page.html"><xsl:value-of select="$mode"/> summary</a> page.
-              </td>
-            </tr>
-            <xsl:copy-of select="$legend"/>
-          </table>
-          <div class="legend">
-            To specify the explicit markup edit status/explicit-failure-markup.xml
-         </div>
-      </div>
-
-      <xsl:variable name="multiple.libraries" select="count( $libraries ) > 1"/>
-
-      <!-- TOC -->
-      <xsl:if test="$multiple.libraries">
-          <div class="detail-toc">
-              <a name="toc"></a>
-              <ul>
-                  <xsl:for-each select="$libraries">
-                      <xsl:sort select="." order="ascending" />
-                      <li class="detail-toc-entry">
-                          <a href="#{.}" class="detail-toc-entry">
-                              <xsl:value-of select="."/>
-                          </a>
-                      </li>
-                  </xsl:for-each>
-              </ul>
-          </div>
-      </xsl:if> 
-     
-      <!-- for each library -->
-      <xsl:for-each select="$libraries">
-        <xsl:sort select="." order="ascending" />
-        <xsl:variable name="library" select="." />
-        
-        <xsl:if test="$multiple.libraries">
-            <div class="library-name">
-                <a name="{$library}" href="../../libs/{$library}" class="library-link">
-                    <xsl:value-of select="$library" />
-                </a>
-            </div>
-        </xsl:if>
-
-          <xsl:variable name="library_marks" select="$explicit_markup//library[ @name = $library ]/mark-unusable[ toolset/@name = $not_ordered_toolsets ]"/>
-
-          <table border="0" cellspacing="0" cellpadding="0" class="detail-table" summary="library results">
-
-            <thead>
-              <xsl:call-template name="insert_toolsets_row">
-                <xsl:with-param name="library_marks" select="$library_marks"/>
-                <xsl:with-param name="library" select="$library"/>
-                <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
-              </xsl:call-template>
-            </thead>
-            <tfoot>
-              <xsl:call-template name="insert_toolsets_row">
-                <xsl:with-param name="library_marks" select="$library_marks"/>
-                <xsl:with-param name="library" select="$library"/>
-                <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
-              </xsl:call-template>
-            </tfoot>
+                    
+                <xsl:copy-of select="document( concat( 'html/library_', $mode, '_legend.html' ) )"/>
+                <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
 
-            <tbody>
-                <!-- lib_tests = test_log* -->
-                <xsl:variable name="lib_tests" select="//test-log[@library = $library]" /> 
+                </body>
+                </html>
+            
+            </exsl:document>  
 
-                <!-- lib_unique_test_names = test_log* -->
-                <xsl:variable name="lib_unique_test_names" 
-                    select="$lib_tests[ generate-id(.) = generate-id( key('test_name_key', concat( @library, '&gt;@&lt;', @test-name ) ) ) ]" />
-
-                <xsl:variable name="lib_corner_case_tests_markup" select="$explicit_markup//library[ @name = $library ]/test[ @corner-case='yes' ]"/>
-                
-                <xsl:variable name="lib_general_tests" 
-                    select="meta:order_tests_by_name( $lib_unique_test_names[ not( @test-name = $lib_corner_case_tests_markup/@name ) ]  )"/>
-
-
-                <xsl:variable name="lib_corner_case_tests" select="meta:order_tests_by_name( $lib_unique_test_names[ @test-name = $lib_corner_case_tests_markup/@name ] ) " />
-
-                <!-- general tests section -->
+            </xsl:for-each>
 
-                <xsl:call-template name="insert_test_section">
-                    <xsl:with-param name="library" select="$library"/>
-                    <xsl:with-param name="section_tests" select="$lib_general_tests"/>
-                    <xsl:with-param name="lib_tests" select="$lib_tests"/>
-                    <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
-                </xsl:call-template>
+    </xsl:template>
+      
 
-                <!-- corner-case tests section -->
+    <!-- report developer status -->
+    <xsl:template name="insert_cell_developer">
+        <xsl:param name="test_log"/>
+        <xsl:param name="log_link"/>
+        
+        <xsl:variable name="is_new">
+        <xsl:if test="$test_log/@is-new = 'yes' and $test_log/@status = 'unexpected' and $test_log/@result != 'success'">
+            <xsl:value-of select="'-new'"/>
+        </xsl:if>
+        </xsl:variable>
 
-                <xsl:if test="count( $lib_corner_case_tests ) > 0">
-                    <tr>
-                        <!--<td colspan="2">&#160;</td>                  -->
-                        <td class="detail-corner-case-header" colspan="{count($ordered_toolsets) + 3 }" align="center">Corner-case tests</td>
-                        <!--<td>&#160;</td>-->
-                    </tr>
+        <xsl:variable name="class">
+        <xsl:choose>
+            <xsl:when test="not( $test_log )">
+            <xsl:text>library-missing</xsl:text>
+            </xsl:when>
+            <xsl:when test="meta:is_unusable( $explicit_markup, $test_log/@library, $test_log/@toolset )">
+            <xsl:text>library-unusable</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+            <xsl:value-of select="concat( 'library-', $test_log/@result, '-', $test_log/@status, $is_new )"/>
+            </xsl:otherwise>
+        </xsl:choose>
+        </xsl:variable>
 
-                <xsl:call-template name="insert_test_section">
-                    <xsl:with-param name="library" select="$library"/>
-                    <xsl:with-param name="section_tests" select="$lib_corner_case_tests"/>
-                    <xsl:with-param name="lib_tests" select="$lib_tests"/>
-                    <xsl:with-param name="toolsets" select="$ordered_toolsets"/>
-                </xsl:call-template>
-                
-              </xsl:if>
-
-            </tbody>
-          </table>
-          <xsl:if test="count( $library_marks/note ) > 0 ">
-            <table border="0" cellpadding="0" cellspacing="0" class="detail-library-notes" summary="library notes">
-              <xsl:for-each select="$library_marks/note">
-                <tr class="detail-library-note">
-                  <td valign="top" width="3em">
-                    <a name="{$library}-note-{position()}">
-                      <span class="super"><xsl:value-of select="position()"/></span>
-                    </a>
-                  </td>
-                  <td>
-                      <xsl:variable name="refid" select="@refid"/>
-                      <xsl:call-template name="show_note">
-                          <xsl:with-param name="note" select="." />
-                          <xsl:with-param name="reference" select="$explicit_markup//note[ $refid = @id ]"/>
-                      </xsl:call-template>
-                  </td>
-                </tr>
-              </xsl:for-each>
-            </table>
-          </xsl:if>
-          
-          <!-- Dont generate the link to toc and summary if there is just on library -->
-          <xsl:if test="$multiple.libraries">
-              <div class="detail-footer">
-                  <a href="#toc" class="back-link">toc</a>
-                  <xsl:text>&#160;|&#160;</xsl:text>
-                  <a href="{$mode}_summary_page.html" class="back-link">summary</a>
-              </div>
-          </xsl:if>
-        </xsl:for-each>
-        <div>
-          <a href="http://validator.w3.org/check/referer">
-            <img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"/>
-          </a>
-        </div>
-
-      </body>
-    </html>
-    
-  </xsl:template>
-  
-
-  <!-- report developer status -->
-  <xsl:template name="insert_cell_developer">
-    <xsl:param name="test_log"/>
-    <xsl:param name="log_link"/>
-    
-    <xsl:variable name="is_new">
-       <xsl:if test="$test_log/@is-new = 'yes' and $test_log/@status = 'unexpected' and $test_log/@result != 'success'">
-          <xsl:value-of select="'-new'"/>
-       </xsl:if>
-    </xsl:variable>
+        <td class="{$class}">
+        <xsl:choose>
+            <xsl:when test="not( $test_log )">
+            <xsl:text>missing</xsl:text>
+            </xsl:when> 
+            <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'expected'">
+            <a href="{$log_link}" class="log-link" target="_top">
+                fail
+            </a>
+            </xsl:when>
+            <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'unexpected'">
+            <a href="{$log_link}" class="log-link" target="_top">
+                fail
+            </a>
+            </xsl:when>
+            <xsl:when test="$test_log/@result = 'success' and $test_log/@status = 'unexpected'">
+                pass
+            </xsl:when>
+            <xsl:otherwise>
+            <xsl:text>pass</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>  
+        <xsl:if test="count( $test_log ) > 1" > 
+            <div class="library-conf-problem">conf.&#160;problem</div>
+        </xsl:if>
+        </td>
+    </xsl:template>
 
-    <xsl:variable name="class">
-      <xsl:choose>
-        <xsl:when test="not( $test_log )">
-          <xsl:text>detail-missing</xsl:text>
+    <!-- report user status -->
+    <xsl:template name="insert_cell_user">
+        <xsl:param name="test_log"/>
+        <xsl:param name="log_link"/>
+        
+        <xsl:variable name="class">
+        <xsl:choose>
+            <xsl:when test="not( $test_log )">
+            <xsl:text>library-missing</xsl:text>
+            </xsl:when>
+            <xsl:when test="meta:is_unusable( $explicit_markup, $test_log/@library, $test_log/@toolset )">
+            <xsl:text>library-unusable</xsl:text>
+            </xsl:when>
+            <xsl:when test="$test_log[@result='fail' and @status='unexpected']">
+            <xsl:text>library-user-fail-unexpected</xsl:text>
+            </xsl:when>
+            <xsl:when test="$test_log[ @result='fail' and @status='expected' ]">
+            <xsl:text>library-user-fail-expected</xsl:text>
         </xsl:when>
-        <xsl:when test="meta:is_unusable( $explicit_markup, $test_log/@library, $test_log/@toolset )">
-          <xsl:text>detail-unusable</xsl:text>
+        <xsl:when test="$test_log[ @result='success']">
+            <xsl:text>library-user-success</xsl:text>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:value-of select="concat( 'detail-', $test_log/@result, '-', $test_log/@status, $is_new )"/>
+            <xsl:message terminate="yes">
+            Unknown status
+            </xsl:message>
         </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
+        </xsl:choose>
 
-    <td class="{$class}">
-      <xsl:choose>
-        <xsl:when test="not( $test_log )">
-          <xsl:text>missing</xsl:text>
-        </xsl:when> 
-        <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'expected'">
-          <a href="{$log_link}" class="log-link">
-            fail
-          </a>
-        </xsl:when>
-        <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'unexpected'">
-          <a href="{$log_link}" class="log-link">
-            fail
-          </a>
-        </xsl:when>
-        <xsl:when test="$test_log/@result = 'success' and $test_log/@status = 'unexpected'">
-            pass
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>pass</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>  
-      <xsl:if test="count( $test_log ) > 1" > 
-        <div class="detail-conf-problem">conf.&#160;problem</div>
-      </xsl:if>
-    </td>
-  </xsl:template>
-
-  <!-- report user status -->
-  <xsl:template name="insert_cell_user">
-    <xsl:param name="test_log"/>
-    <xsl:param name="log_link"/>
-    
-    <xsl:variable name="class">
-      <xsl:choose>
-        <xsl:when test="not( $test_log )">
-          <xsl:text>detail-missing</xsl:text>
-        </xsl:when>
-        <xsl:when test="meta:is_unusable( $explicit_markup, $test_log/@library, $test_log/@toolset )">
-          <xsl:text>detail-unusable</xsl:text>
-        </xsl:when>
-        <xsl:when test="$test_log[@result='fail' and @status='unexpected']">
-          <xsl:text>detail-user-fail-unexpected</xsl:text>
-        </xsl:when>
-        <xsl:when test="$test_log[ @result='fail' and @status='expected' ]">
-        <xsl:text>detail-user-fail-expected</xsl:text>
-      </xsl:when>
-      <xsl:when test="$test_log[ @result='success']">
-        <xsl:text>detail-user-success</xsl:text>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:message terminate="yes">
-          Unknown status
-        </xsl:message>
-      </xsl:otherwise>
-    </xsl:choose>
-
-  </xsl:variable>
-
-    <td class="{$class}">
-      <xsl:choose>
-        <xsl:when test="not( $test_log )">
-          missing
-        </xsl:when>
-        <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'expected'">
-          <a href="{$log_link}" class="log-link">
-            fail
-          </a>
-        </xsl:when>
-        <xsl:when test="$test_log/@result != 'success'">
-          <a href="{$log_link}" class="log-link">
-            unexp.
-          </a>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>pass</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>  
-
-      <xsl:if test="count( $test_log ) > 1" > 
-        <div class="conf-problem">conf.&#160;problem</div>
-      </xsl:if>
-    </td>
-  </xsl:template>
-
-  <xsl:template name="insert_test_line">
-    <xsl:param name="library"/>    
-    <xsl:param name="test_name"/>
-    <xsl:param name="test_results"/>
-    <xsl:param name="toolsets"/>
-    <xsl:param name="line_mod"/>
-
-    <xsl:variable name="test_program">
-      <xsl:value-of select="$test_results[1]/@test-program"/>
     </xsl:variable>
 
-    <xsl:variable name="test_header">
-      <td class="test-name">
-        <a href="../../{$test_program}" class="test-link">
-          <xsl:value-of select="$test_name"/>
-        </a>
-      </td>
-    </xsl:variable>
+        <td class="{$class}">
+        <xsl:choose>
+            <xsl:when test="not( $test_log )">
+            missing
+            </xsl:when>
+            <xsl:when test="$test_log/@result != 'success' and $test_log/@status = 'expected'">
+            <a href="{$log_link}" class="log-link" target="_top">
+                fail
+            </a>
+            </xsl:when>
+            <xsl:when test="$test_log/@result != 'success'">
+            <a href="{$log_link}" class="log-link" target="_top">
+                unexp.
+            </a>
+            </xsl:when>
+            <xsl:otherwise>
+            <xsl:text>pass</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>  
 
-    <tr class="detail-row{$line_mod}">
-      <xsl:copy-of select="$test_header"/>
-      <xsl:call-template name="test_type_col"/>
-      
-      <xsl:for-each select="$toolsets/toolset">
-        <xsl:variable name="toolset" select="@toolset" />
+        <xsl:if test="count( $test_log ) > 1" > 
+            <div class="conf-problem">conf.&#160;problem</div>
+        </xsl:if>
+        </td>
+    </xsl:template>
 
-        <xsl:variable name="test_result_for_toolset" select="$test_results[ @toolset = $toolset ]"/>
-        <xsl:choose>
-          <xsl:when test="$mode='user'">
-            <xsl:call-template name="insert_cell_user">
-              <xsl:with-param name="test_log" select="$test_result_for_toolset"/>
-              <xsl:with-param name="log_link" select="meta:output_file_path( $test_result_for_toolset/@target-directory )"/>
-            </xsl:call-template>
-          </xsl:when>
-          <xsl:when test="$mode='developer'">
-            <xsl:call-template name="insert_cell_developer">
-              <xsl:with-param name="test_log" select="$test_result_for_toolset"/>
-              <xsl:with-param name="log_link" select="meta:output_file_path( $test_result_for_toolset/@target-directory )"/>
+    <xsl:template name="insert_test_line">
+        <xsl:param name="library"/>    
+        <xsl:param name="test_name"/>
+        <xsl:param name="test_results"/>
+        <xsl:param name="toolsets"/>
+        <xsl:param name="line_mod"/>
+
+        <xsl:variable name="test_program">
+        <xsl:value-of select="$test_results[1]/@test-program"/>
+        </xsl:variable>
+
+        <xsl:variable name="test_header">
+        <td class="test-name">
+            <a href="../../{$test_program}" class="test-link">
+            <xsl:value-of select="$test_name"/>
+            </a>
+        </td>
+        </xsl:variable>
+
+        <tr class="library-row{$line_mod}">
+        <xsl:copy-of select="$test_header"/>
+        <xsl:call-template name="test_type_col"/>
+          
+        <xsl:for-each select="$toolsets/toolset">
+            <xsl:variable name="toolset" select="@toolset" />
+
+            <!-- Write log file -->
+            <xsl:variable name="test_result_for_toolset" select="$test_results[ @toolset = $toolset ]"/>
+            <xsl:variable name="log_file" select="meta:output_file_path( $test_result_for_toolset/@target-directory )"/>
+            <xsl:message>Writing document <xsl:value-of select="$log_file"/></xsl:message>
+            
+            <exsl:document href="{$log_file}"
+                method="html" 
+                doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+                encoding="utf-8"
+                indent="yes">
+
+                <html>
+                <head>
+                    <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                    <!--<title>Boost regression unresolved issues: <xsl:value-of select="$source"/></title>-->
+                </head>
+                <frameset cols="170px,*" frameborder="0" framespacing="0" border="0">
+                <frame name="tocframe" src="../toc.html" scrolling="auto"/>
+                <frame name="docframe" src="../../{$log_file}" scrolling="auto"/>
+                </frameset>
+                </html>
+            </exsl:document>
+
+            <!-- Insert cell -->
+            <xsl:choose>
+            <xsl:when test="$mode='user'">
+                <xsl:call-template name="insert_cell_user">
+                <xsl:with-param name="test_log" select="$test_result_for_toolset"/>
+                <xsl:with-param name="log_link" select="$log_file"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:when test="$mode='developer'">
+                <xsl:call-template name="insert_cell_developer">
+                <xsl:with-param name="test_log" select="$test_result_for_toolset"/>
+                <xsl:with-param name="log_link" select="$log_file"/>
+                </xsl:call-template>
+            </xsl:when>
+            </xsl:choose>
+            
+        </xsl:for-each>
+        <xsl:copy-of select="$test_header"/>
+        </tr>
+    </xsl:template>
+
+    <xsl:template name="insert_test_section">
+        <xsl:param name="library"/>      
+        <xsl:param name="section_tests"/>
+        <xsl:param name="lib_tests"/>
+        <xsl:param name="toolsets"/>
+
+        <xsl:for-each select="$section_tests">
+            <xsl:variable name="test_name" select="@test-name"/>
+            <xsl:variable name="line_mod">
+                <xsl:choose>
+                    <xsl:when test="1 = last()">
+                        <xsl:text>-single</xsl:text>
+                    </xsl:when>
+                    <xsl:when test="generate-id( . ) = generate-id( $section_tests[1] )">
+                        <xsl:text>-first</xsl:text>
+                    </xsl:when>
+                    <xsl:when test="generate-id( . ) = generate-id( $section_tests[last()] )">
+                        <xsl:text>-last</xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:text></xsl:text>
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:variable>
+              
+            <xsl:call-template name="insert_test_line">
+                <xsl:with-param name="library" select="$library"/>
+                <xsl:with-param name="test_results" select="$lib_tests[ @test-name = $test_name ]"/>
+                <xsl:with-param name="toolsets" select="$toolsets"/>
+                <xsl:with-param name="test_name" select="$test_name"/>
+                <xsl:with-param name="line_mod" select="$line_mod"/>
             </xsl:call-template>
-          </xsl:when>
-        </xsl:choose>
-        
-      </xsl:for-each>
-      <xsl:copy-of select="$test_header"/>
-    </tr>
-  </xsl:template>
-
-  <xsl:template name="insert_test_section">
-      <xsl:param name="library"/>      
-      <xsl:param name="section_tests"/>
-      <xsl:param name="lib_tests"/>
-      <xsl:param name="toolsets"/>
-
-      <xsl:for-each select="$section_tests">
-          <xsl:variable name="test_name" select="@test-name"/>
-          <xsl:variable name="line_mod">
-              <xsl:choose>
-                  <xsl:when test="1 = last()">
-                      <xsl:text>-single</xsl:text>
-                  </xsl:when>
-                  <xsl:when test="generate-id( . ) = generate-id( $section_tests[1] )">
-                      <xsl:text>-first</xsl:text>
-                  </xsl:when>
-                  <xsl:when test="generate-id( . ) = generate-id( $section_tests[last()] )">
-                      <xsl:text>-last</xsl:text>
-                  </xsl:when>
-                  <xsl:otherwise>
-                      <xsl:text></xsl:text>
-                  </xsl:otherwise>
-              </xsl:choose>
-          </xsl:variable>
+        </xsl:for-each>
           
-          <xsl:call-template name="insert_test_line">
-              <xsl:with-param name="library" select="$library"/>
-              <xsl:with-param name="test_results" select="$lib_tests[ @test-name = $test_name ]"/>
-              <xsl:with-param name="toolsets" select="$toolsets"/>
-              <xsl:with-param name="test_name" select="$test_name"/>
-              <xsl:with-param name="line_mod" select="$line_mod"/>
-          </xsl:call-template>
-      </xsl:for-each>
-      
-  </xsl:template>
-
-  <func:function name="meta:order_tests_by_name">
-      <xsl:param name="tests"/>
+    </xsl:template>
 
-      <xsl:variable name="a">                  
-          <xsl:for-each select="$tests">
-              <xsl:sort select="@test-name" order="ascending"/>
-              <xsl:copy-of select="."/>
-          </xsl:for-each>
-      </xsl:variable>
-      <func:result select="exsl:node-set( $a )/*"/>
-  </func:function>
+    <func:function name="meta:order_tests_by_name">
+        <xsl:param name="tests"/>
 
+        <xsl:variable name="a">                  
+            <xsl:for-each select="$tests">
+                <xsl:sort select="@test-name" order="ascending"/>
+                <xsl:copy-of select="."/>
+            </xsl:for-each>
+        </xsl:variable>
+        <func:result select="exsl:node-set( $a )/*"/>
+    </func:function>
 
 </xsl:stylesheet>

+ 343 - 437
tools/regression/xsl_reports/xsl/summary_page.xsl

@@ -1,454 +1,360 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
- (C) Copyright MetaCommunications, Inc. 2003.
-
- Permission to use, copy, modify, distribute and sell this software
- and its documentation for any purpose is hereby granted without fee, 
- provided that the above copyright notice appears in all copies and 
- that both the copyright notice and this permission notice appear in 
- supporting documentation. No representations are made about the 
- suitability of this software for any purpose. It is provided "as is" 
- without express or implied warranty.
+// Copyright (c) MetaCommunications, Inc. 2003-2004
+//
+// Use, modification and distribution are subject to the Boost Software 
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
+// at http://www.boost.org/LICENSE_1_0.txt)
 
 -->
 
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:exsl="http://exslt.org/common"
-  xmlns:func="http://exslt.org/functions"
-  xmlns:meta="http://www.meta-comm.com"
-  version="1.0">
-
-  <xsl:import href="common.xsl"/>
-
-  <xsl:output method="html" 
-    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
-    encoding="utf-8" 
-    indent="yes"
-    />
-
-
-  <xsl:param name="mode"/>
-  <xsl:param name="source"/>
-  <xsl:param name="run_date"/>
-  <xsl:param name="comment_file"/>
-  <xsl:param name="explicit_markup_file"/>
-
-  <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
-
-  <xsl:variable name="alternate_mode">
-    <xsl:choose>
-      <xsl:when test="$mode='user'">developer</xsl:when>
-      <xsl:otherwise>user</xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-
-  <!-- necessary indexes -->
-  <xsl:key 
-    name="library_test_name_key" 
-    match="test-log" 
-    use="concat( @library, '&gt;@&lt;', @test-name )"/>
-  <xsl:key 
-    name="library_key" 
-    match="test-log" 
-    use="@library"/>
-  <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
-  <xsl:key name="test_name_key"  match="test-log" use="@test-name "/>
-
-  <!-- toolsets -->
-
-  <xsl:variable name="toolsets" select="//test-log[ generate-id(.) = generate-id( key('toolset_key',@toolset)[1] ) and @toolset != '' ]/@toolset"/>
-
-  <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
-
-  <xsl:variable name="sorted_toolset_fragment">
-    <xsl:call-template name="get_toolsets">
-      <xsl:with-param name="toolsets" select="$toolsets"/>
-      <xsl:with-param name="required_toolsets" select="$required_toolsets"/>
-    </xsl:call-template>
-  </xsl:variable>
-
-  <xsl:variable name="sorted_toolsets" select="exsl:node-set( $sorted_toolset_fragment )"/>
-    
-  <!-- libraries -->
-
-  <xsl:variable name="libraries" select="//test-log[ generate-id(.) = generate-id( key('library_key',@library)[1] ) and @library != '' ]/@library"/>
-
-  <xsl:variable name="sorted_libraries_output">
-      <xsl:for-each select="$libraries">
-        <xsl:sort select="." order="ascending" />
-        <library><xsl:copy-of select="."/></library>
-      </xsl:for-each>
-  </xsl:variable>
-
-  <xsl:variable name="sorted_libraries" select="exsl:node-set( $sorted_libraries_output )/library/@library"/>
-
-  
-  <xsl:template match="/">
-    <html>
-      <head>
-        <link rel="stylesheet" type="text/css" href="master.css" title="master" />
-        <title>Boost regression - <xsl:value-of select="$mode"/> summary: <xsl:value-of select="$source"/></title>
-      </head>
-      <body>
-
-        <!-- header -->
-
-        <xsl:variable name="legend">
-          <xsl:choose>
-            <xsl:when test="$mode='user'">
-              <tr>
-                <td class="header-item">Purpose</td>
-                <td class="header-item-content">
-                  The purpose of this page and the <a href="{$mode}_result_page.html">detailed user report</a>
-                  is to help a user to find out whether a particular library works on the particular compiler(s).
-                  For CVS "health report", see <a href="{$alternate_mode}_summary_page.html">developer summary</a>.
-                </td>
-              </tr>
-              <tr>
-                <td class="header-item">Legend</td>
-                <td class="header-item-content">
-                  <table border="0" class="legend-table">
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-user-success">&#160;</td></tr></table></td>
-                      <td class="legend-item">all library tests are passing</td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-user-fail-expected">details</td></tr></table></td>
-                      <td class="legend-item">
-                        there are some known failures in the tests, see the detailed report
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-user-fail-unexpected">unexp.</td></tr></table></td>
-                      <td class="legend-item">
-                        some tests that the library author expects to pass are currently failing,
-                        see the detailed report
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-unusable">unusable</td></tr></table></td>
-                      <td class="legend-item">
-                        the library author marked it as unusable on particular platform/toolset
-                      </td>
-                    </tr>
-                  </table>
-                </td>
-              </tr>
-            </xsl:when>
-            <xsl:when test="$mode='developer'">
-              <tr>
-                <td class="header-item">Purpose</td>
-                <td class="header-item-content">
-                  The purpose of this page is to provide boost developers with visual indication
-                  of the CVS "health". 
-                  <a href="{$mode}_result_page.html">Detailed report</a> is available.
-                  For user-level report, see <a href="{$alternate_mode}_summary_page.html">user summary</a>.
-                </td>
-              </tr>
-              <tr>
-                <td class="header-item">Legend</td>
-                <td class="header-item-content">
-                  <table border="0" class="legend-table">
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-expected">OK</td></tr></table></td>
-                      <td class="legend-item">
-                        all expected tests pass
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-success-unexpected">OK</td></tr></table></td>
-                      <td class="legend-item">
-                        all expected tests pass, and some other tests that were expected to fail 
-                        unexpectedly pass as well
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-fail-unexpected-new">fail</td></tr></table></td>
-                      <td class="legend-item">
-                        there are some failures on the newly added tests/compiler(s)
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-fail-unexpected">broken</td></tr></table></td>
-                      <td class="legend-item">
-                        tests that the library author expects to pass are currently failing
-                      </td>
-                    </tr>
-                    <tr>
-                      <td><table width="100%"><tr class="summary-row-single"><td class="summary-unusable">unusable</td></tr></table></td>
-                      <td class="legend-item">
-                        the library author marked it as unusable on particular platform/toolset
-                      </td>
-                    </tr>
-                  </table>
-                </td>
-              </tr>
-            </xsl:when>
-          </xsl:choose>
-        </xsl:variable>
+<xsl:stylesheet 
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+    xmlns:exsl="http://exslt.org/common"
+    xmlns:func="http://exslt.org/functions"
+    xmlns:meta="http://www.meta-comm.com"
+    extension-element-prefixes="func exsl"
+    version="1.0">
+
+    <xsl:import href="common.xsl"/>
+
+    <xsl:output method="html" 
+        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
+        encoding="utf-8" 
+        indent="yes"
+        />
+
+
+    <xsl:param name="mode"/>
+    <xsl:param name="source"/>
+    <xsl:param name="run_date"/>
+    <xsl:param name="comment_file"/>
+    <xsl:param name="explicit_markup_file"/>
+
+    <xsl:variable name="explicit_markup" select="document( $explicit_markup_file )"/>
+
+    <!-- necessary indexes -->
+    <xsl:key 
+        name="library_test_name_key" 
+        match="test-log" 
+        use="concat( @library, '&gt;@&lt;', @test-name )"/>
+    <xsl:key 
+        name="library_key" 
+        match="test-log" 
+        use="@library"/>
+    <xsl:key name="toolset_key" match="test-log" use="@toolset"/>
+    <xsl:key name="test_name_key"  match="test-log" use="@test-name "/>
+
+    <!-- toolsets -->
+
+    <xsl:variable name="toolsets" select="//test-log[ generate-id(.) = generate-id( key('toolset_key',@toolset)[1] ) and @toolset != '' ]/@toolset"/>
+
+    <xsl:variable name="required_toolsets" select="$explicit_markup//mark-toolset[ @status='required' ]"/>
+
+    <xsl:variable name="sorted_toolset_fragment">
+        <xsl:call-template name="get_toolsets">
+        <xsl:with-param name="toolsets" select="$toolsets"/>
+        <xsl:with-param name="required_toolsets" select="$required_toolsets"/>
+        </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:variable name="sorted_toolsets" select="exsl:node-set( $sorted_toolset_fragment )"/>
+        
+    <!-- libraries -->
+
+    <xsl:variable name="libraries" select="//test-log[ generate-id(.) = generate-id( key('library_key',@library)[1] ) and @library != '' ]/@library"/>
+
+    <xsl:variable name="sorted_libraries_output">
+        <xsl:for-each select="$libraries">
+            <xsl:sort select="." order="ascending" />
+            <library><xsl:copy-of select="."/></library>
+        </xsl:for-each>
+    </xsl:variable>
+
+    <xsl:variable name="sorted_libraries" select="exsl:node-set( $sorted_libraries_output )/library/@library"/>
 
-        <div>
-          <table border="0">
-            <tr>
-              <td><img border="0" src="../../c++boost.gif" width="277" height="86" alt="Boost logo"></img></td>
-              <td>
-                <h1 class="page-title">
-                  <xsl:value-of select="$mode"/>
-                  <xsl:text> summary: </xsl:text>
-                  <xsl:value-of select="$source"/>
-                </h1>
-                <b>Report Time: </b> <xsl:value-of select="$run_date"/>
-                <xsl:if test="$comment_file != ''">
-                  <xsl:copy-of select="document( $comment_file )"/>
-                </xsl:if>
-              </td>
-            </tr>
-          </table>
-          <table border="0" class="header-table">
-            <xsl:copy-of select="$legend"/>
-          </table>
-        </div>
-
-        <!-- summary table -->
-
-        <table border="0" cellspacing="0" cellpadding="0" class="summary-table">
-
-          <thead>
-            <xsl:call-template name="insert_toolsets_row">
-              <xsl:with-param name="toolsets" select="$sorted_toolsets"/>
-            </xsl:call-template>
-          </thead>
-
-          <tfoot>
-            <xsl:call-template name="insert_toolsets_row">
-              <xsl:with-param name="toolsets" select="$sorted_toolsets"/>
-            </xsl:call-template>
-          </tfoot>
       
-          <tbody>
-            <xsl:variable name="test_logs" select="//test-log"/>
-
-            <!-- for each library -->
-            <xsl:for-each select="$sorted_libraries">
-              <xsl:variable name="library" select="."/>
-              <xsl:variable name="current_row" select="$test_logs[ @library=$library ]"/>
-
-              <xsl:variable name="expected_test_count" select="count( $current_row[ generate-id(.) = generate-id( key('test_name_key',@test-name)[1] ) ] )"/>
-              <xsl:variable name="library_header">
-                <td class="library-name">
-                  <a href="{$mode}_result_page.html#{.}" class="library-link">
-                    <xsl:value-of select="$library"/>
-                  </a>
-                </td>
-              </xsl:variable>
-
-              <xsl:variable name="line_mod">
-                <xsl:choose>
-                  <xsl:when test="1 = last()">
-                    <xsl:text>-single</xsl:text>
-                  </xsl:when>
-                  <xsl:when test="generate-id( . ) = generate-id( $sorted_libraries[1] )">
-                    <xsl:text>-first</xsl:text>
-                  </xsl:when>
-                  <xsl:when test="generate-id( . ) = generate-id( $sorted_libraries[ last() ] )">
-                    <xsl:text>-last</xsl:text>
-                  </xsl:when>
-                  <xsl:otherwise>
-                    <xsl:text></xsl:text>
-                  </xsl:otherwise>
-                </xsl:choose>
-              </xsl:variable>
-
-
-              <tr class="summary-row{$line_mod}">
-                <xsl:copy-of select="$library_header"/>
-
-                <xsl:for-each select="$sorted_toolsets/toolset">
-                  <xsl:variable name="toolset" select="@toolset"/>
-                  <xsl:variable name="current_cell" select="$current_row[ @toolset=$toolset ]"/>
-                  <xsl:choose>
-                    <xsl:when test="$mode='user'">
-                      <xsl:call-template name="insert_cell_user">
-                        <xsl:with-param name="current_cell" select="$current_cell"/>
-                        <xsl:with-param name="library" select="$library"/>
-                        <xsl:with-param name="toolset" select="$toolset"/>
-                        <xsl:with-param name="expected_test_count" select="$expected_test_count"/>
-                      </xsl:call-template>
+    <xsl:template match="/">
+
+        <xsl:variable name="summary_results" select="'summary_.html'"/>
+
+        <!-- Summary page -->
+        <html>
+            <head>
+                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+                <title>Boost regression summary: <xsl:value-of select="$source"/></title>
+            </head>
+            <frameset cols="170px,*" frameborder="0" framespacing="0" border="0">
+            <frame name="tocframe" src="toc.html" scrolling="auto"/>
+            <frame name="docframe" src="{$summary_results}" scrolling="auto"/>
+            </frameset>
+        </html>
+
+        <!-- Summary results -->
+        <xsl:message>Writing document <xsl:value-of select="$summary_results"/></xsl:message>
+        
+        <exsl:document href="{$summary_results}"
+            method="html" 
+            doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
+            encoding="utf-8"
+            indent="yes">
+
+            <html>
+            <head>
+                <link rel="stylesheet" type="text/css" href="../master.css" title="master" />
+            </head>
+            <body>
+
+            <h1 class="page-title">
+                <xsl:text>Summary: </xsl:text>
+                <a class="hover-link" href="summary.html" target="_top"><xsl:value-of select="$source"/></a>
+            </h1>
+
+            <div class="report-info">
+                <b>Report Time: </b> <xsl:value-of select="$run_date"/>
+            </div>
+
+            <!-- summary table -->
+
+            <table border="0" cellspacing="0" cellpadding="0" class="summary-table">
+
+            <thead>
+                <xsl:call-template name="insert_toolsets_row">
+                <xsl:with-param name="toolsets" select="$sorted_toolsets"/>
+                </xsl:call-template>
+            </thead>
+
+            <tfoot>
+                <xsl:call-template name="insert_toolsets_row">
+                <xsl:with-param name="toolsets" select="$sorted_toolsets"/>
+                </xsl:call-template>
+            </tfoot>
+          
+            <tbody>
+                <xsl:variable name="test_logs" select="//test-log"/>
+
+                <!-- for each library -->
+                <xsl:for-each select="$sorted_libraries">
+                <xsl:variable name="library" select="."/>
+                <xsl:variable name="current_row" select="$test_logs[ @library=$library ]"/>
+
+                <xsl:variable name="expected_test_count" select="count( $current_row[ generate-id(.) = generate-id( key('test_name_key',@test-name)[1] ) ] )"/>
+                <xsl:variable name="library_header">
+                    <td class="library-name">
+                    <a href="{.}.html" class="library-link" target="_top">
+                        <xsl:value-of select="$library"/>
+                    </a>
+                    </td>
+                </xsl:variable>
+
+                <xsl:variable name="line_mod">
+                    <xsl:choose>
+                    <xsl:when test="1 = last()">
+                        <xsl:text>-single</xsl:text>
+                    </xsl:when>
+                    <xsl:when test="generate-id( . ) = generate-id( $sorted_libraries[1] )">
+                        <xsl:text>-first</xsl:text>
                     </xsl:when>
-                    <xsl:when test="$mode='developer'">
-                      <xsl:call-template name="insert_cell_developer">
-                        <xsl:with-param name="current_cell" select="$current_cell"/>
-                        <xsl:with-param name="library" select="$library"/>
-                        <xsl:with-param name="toolset" select="$toolset"/>
-                        <xsl:with-param name="expected_test_count" select="$expected_test_count"/>
-                      </xsl:call-template>
+                    <xsl:when test="generate-id( . ) = generate-id( $sorted_libraries[ last() ] )">
+                        <xsl:text>-last</xsl:text>
                     </xsl:when>
-                  </xsl:choose>
+                    <xsl:otherwise>
+                        <xsl:text></xsl:text>
+                    </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:variable>
+
+
+                <tr class="summary-row{$line_mod}">
+                    <xsl:copy-of select="$library_header"/>
+
+                    <xsl:for-each select="$sorted_toolsets/toolset">
+                    <xsl:variable name="toolset" select="@toolset"/>
+                    <xsl:variable name="current_cell" select="$current_row[ @toolset=$toolset ]"/>
+                    <xsl:choose>
+                        <xsl:when test="$mode='user'">
+                        <xsl:call-template name="insert_cell_user">
+                            <xsl:with-param name="current_cell" select="$current_cell"/>
+                            <xsl:with-param name="library" select="$library"/>
+                            <xsl:with-param name="toolset" select="$toolset"/>
+                            <xsl:with-param name="expected_test_count" select="$expected_test_count"/>
+                        </xsl:call-template>
+                        </xsl:when>
+                        <xsl:when test="$mode='developer'">
+                        <xsl:call-template name="insert_cell_developer">
+                            <xsl:with-param name="current_cell" select="$current_cell"/>
+                            <xsl:with-param name="library" select="$library"/>
+                            <xsl:with-param name="toolset" select="$toolset"/>
+                            <xsl:with-param name="expected_test_count" select="$expected_test_count"/>
+                        </xsl:call-template>
+                        </xsl:when>
+                    </xsl:choose>
+                    </xsl:for-each>
+                    
+                    <xsl:copy-of select="$library_header"/>
+                </tr>          
                 </xsl:for-each>
-                
-                <xsl:copy-of select="$library_header"/>
-              </tr>          
-            </xsl:for-each>
-          </tbody>
-        </table>
-        <div>
-          <a href="http://validator.w3.org/check/referer">
-            <img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"/>
-          </a>
-        </div>
-    </body>
- </html>
-</xsl:template>
-
-<!-- report developer status -->
-<xsl:template name="insert_cell_developer">
-  <xsl:param name="current_cell"/>
-  <xsl:param name="library"/>
-  <xsl:param name="toolset"/>
-  <xsl:param name="expected_test_count"/>
-  <xsl:variable name="class">
-    <xsl:choose> 
-      <xsl:when test="meta:is_unusable( $explicit_markup, $library, $toolset )">
-        <xsl:text>summary-unusable</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell ) &lt; $expected_test_count">
-        <xsl:text>summary-missing</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[@result='fail' and  @status='unexpected' and @is-new='no'] )">
-        <xsl:text>summary-fail-unexpected</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[@result='fail' and  @status='unexpected' and @is-new='yes'] )">
-        <xsl:text>summary-fail-unexpected-new</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[@result='success' and  @status='unexpected'] )">
-        <xsl:text>summary-success-unexpected</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[@status='expected'] )">
-        <xsl:text>summary-expected</xsl:text>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="count( $current_cell )"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  
-  <td class="{$class}">
-    <xsl:choose>
-      <xsl:when test="$class='summary-unusable'">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>unusable</xsl:text>
-        </a>          
-      </xsl:when>
-      <xsl:when test="$class='summary-missing'">
-        <xsl:text>missing</xsl:text>
-      </xsl:when>
-      <xsl:when test="$class='summary-fail-unexpected'">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>broken</xsl:text>
-        </a>
-      </xsl:when>
-      <xsl:when test="$class='summary-fail-unexpected-new' ">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>fail</xsl:text>
-        </a>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:text>OK</xsl:text>
-      </xsl:otherwise>
-    </xsl:choose>
-  </td>
-  
-</xsl:template>
-
-
-<!-- report user status -->
-<xsl:template name="insert_cell_user">
-  <xsl:param name="current_cell"/>
-  <xsl:param name="library"/>
-  <xsl:param name="toolset"/>
-  <xsl:param name="expected_test_count"/>
-  <xsl:variable name="class">
-    <xsl:choose>
-      <xsl:when test="meta:is_unusable( $explicit_markup, $library, $toolset )">
-        <xsl:text>summary-unusable</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell ) &lt; $expected_test_count">
-        <xsl:text>summary-missing</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[@result='fail' and @status='unexpected' ] )">
-        <xsl:text>summary-user-fail-unexpected</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[ @result='fail'] )">
-        <xsl:text>summary-user-fail-expected</xsl:text>
-      </xsl:when>
-      <xsl:when test="count( $current_cell[ @result='success'] )">
-        <xsl:text>summary-user-success</xsl:text>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:message terminate="yes">
-          Unknown status
-          <xsl:copy-of select="$current_cell">
-          </xsl:copy-of>
-        </xsl:message>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  
-  <td class="{$class}">
-    <xsl:choose>
-      <xsl:when test="$class='summary-unusable'">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>unusable</xsl:text>
-        </a>          
-      </xsl:when>
-
-      <xsl:when test="$class='summary-missing'">
-        <xsl:text>missing</xsl:text>
-      </xsl:when>
-
-      <xsl:when test="$class='summary-user-fail-unexpected'">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>unexp.</xsl:text>
-        </a>
-      </xsl:when>
-
-      <xsl:when test="$class='summary-user-fail-expected'">
-        <a href="{$mode}_result_page.html#{$library}" class="log-link">
-          <xsl:text>details</xsl:text>
-        </a>
-      </xsl:when>
-
-      <xsl:otherwise>
-        <xsl:text>&#160;</xsl:text>
-      </xsl:otherwise>
-    </xsl:choose>
-  </td>
-  
-</xsl:template>
-
-<xsl:template name="insert_toolsets_row">
-  <xsl:param name="toolsets"/>
-  <tr>
-    <td class="head">library / toolset</td>
-    
-    <xsl:for-each select="$toolsets/toolset">
-      <xsl:variable name="class">
+            </tbody>
+            </table>
+
+            <xsl:copy-of select="document( concat( 'html/summary_', $mode, '_legend.html' ) )"/>
+            <xsl:copy-of select="document( 'html/make_tinyurl.html' )"/>
+
+            </body>
+            </html>
+        </exsl:document>  
+
+    </xsl:template>
+
+    <!-- report developer status -->
+    <xsl:template name="insert_cell_developer">
+    <xsl:param name="current_cell"/>
+    <xsl:param name="library"/>
+    <xsl:param name="toolset"/>
+    <xsl:param name="expected_test_count"/>
+    <xsl:variable name="class">
+        <xsl:choose> 
+        <xsl:when test="meta:is_unusable( $explicit_markup, $library, $toolset )">
+            <xsl:text>summary-unusable</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell ) &lt; $expected_test_count">
+            <xsl:text>summary-missing</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[@result='fail' and  @status='unexpected' and @is-new='no'] )">
+            <xsl:text>summary-fail-unexpected</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[@result='fail' and  @status='unexpected' and @is-new='yes'] )">
+            <xsl:text>summary-fail-unexpected-new</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[@result='success' and  @status='unexpected'] )">
+            <xsl:text>summary-success-unexpected</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[@status='expected'] )">
+            <xsl:text>summary-expected</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:value-of select="count( $current_cell )"/>
+        </xsl:otherwise>
+        </xsl:choose>
+    </xsl:variable>
+      
+    <td class="{$class}">
+        <xsl:choose>
+        <xsl:when test="$class='summary-unusable'">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>n/a</xsl:text>
+            </a>          
+        </xsl:when>
+        <xsl:when test="$class='summary-missing'">
+            <xsl:text>missing</xsl:text>
+        </xsl:when>
+        <xsl:when test="$class='summary-fail-unexpected'">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>broken</xsl:text>
+            </a>
+        </xsl:when>
+        <xsl:when test="$class='summary-fail-unexpected-new' ">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>fail</xsl:text>
+            </a>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:text>OK</xsl:text>
+        </xsl:otherwise>
+        </xsl:choose>
+    </td>
+      
+    </xsl:template>
+
+
+    <!-- report user status -->
+    <xsl:template name="insert_cell_user">
+    <xsl:param name="current_cell"/>
+    <xsl:param name="library"/>
+    <xsl:param name="toolset"/>
+    <xsl:param name="expected_test_count"/>
+    <xsl:variable name="class">
+        <xsl:choose>
+        <xsl:when test="meta:is_unusable( $explicit_markup, $library, $toolset )">
+            <xsl:text>summary-unusable</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell ) &lt; $expected_test_count">
+            <xsl:text>summary-missing</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[@result='fail' and @status='unexpected' ] )">
+            <xsl:text>summary-user-fail-unexpected</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[ @result='fail'] )">
+            <xsl:text>summary-user-fail-expected</xsl:text>
+        </xsl:when>
+        <xsl:when test="count( $current_cell[ @result='success'] )">
+            <xsl:text>summary-user-success</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+            <xsl:message terminate="yes">
+            Unknown status
+            <xsl:copy-of select="$current_cell">
+            </xsl:copy-of>
+            </xsl:message>
+        </xsl:otherwise>
+        </xsl:choose>
+    </xsl:variable>
+      
+    <td class="{$class}">
         <xsl:choose>
-          <xsl:when test="@required='yes'">
-            <xsl:text>required-toolset-name</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>toolset-name</xsl:text>
-          </xsl:otherwise>
+        <xsl:when test="$class='summary-unusable'">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>unusable</xsl:text>
+            </a>          
+        </xsl:when>
+
+        <xsl:when test="$class='summary-missing'">
+            <xsl:text>missing</xsl:text>
+        </xsl:when>
+
+        <xsl:when test="$class='summary-user-fail-unexpected'">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>unexp.</xsl:text>
+            </a>
+        </xsl:when>
+
+        <xsl:when test="$class='summary-user-fail-expected'">
+            <a href="{$library}.html" class="log-link" target="_top">
+            <xsl:text>details</xsl:text>
+            </a>
+        </xsl:when>
+
+        <xsl:otherwise>
+            <xsl:text>&#160;</xsl:text>
+        </xsl:otherwise>
         </xsl:choose>
-      </xsl:variable>
+    </td>
       
-      <td class="{$class}"><xsl:value-of select="@toolset"/></td>
-    </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template name="insert_toolsets_row">
+    <xsl:param name="toolsets"/>
+    <tr>
+        <td class="head">library / toolset</td>
+        
+        <xsl:for-each select="$toolsets/toolset">
+        <xsl:variable name="class">
+            <xsl:choose>
+            <xsl:when test="@required='yes'">
+                <xsl:text>required-toolset-name</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:text>toolset-name</xsl:text>
+            </xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+          
+        <td class="{$class}"><xsl:value-of select="@toolset"/></td>
+        </xsl:for-each>
 
-    <td class="head">toolset / library</td>
-  </tr>
-</xsl:template>
+        <td class="head">toolset / library</td>
+    </tr>
+    </xsl:template>
 
 </xsl:stylesheet>

粤ICP备19079148号