[libvirt] [test-API PATCH] log_output: Fix whitespace in log output XSL
Martin Kletzander
mkletzan at redhat.com
Thu Mar 29 12:26:36 UTC 2012
On 03/29/2012 02:04 PM, Peter Krempa wrote:
> The XSL file that converts the log xml into a html file contains some
> strange whitespace characters that output in the HTML as squares.
>
> This patch fixes the whitespace and reformats the indetation to two
> spaces as used in libvirt XML files.
>
> *log.css: -make test name field wider
> *log.xsl: -fix whitespace and indentation
> -remove '@' from test headers
> ---
> log.css | 2 +-
> log.xsl | 341 +++++++++++++++++++++++++++++++--------------------------------
> 2 files changed, 170 insertions(+), 173 deletions(-)
>
> diff --git a/log.css b/log.css
> index d5fe3e6..84f3ea6 100644
> --- a/log.css
> +++ b/log.css
> @@ -75,7 +75,7 @@ table td{
> }
>
> .li-tit{
> - width:150px;
> + width:250px;
> }
>
> .statu-list{
> diff --git a/log.xsl b/log.xsl
> index 4ebf030..84ad5fa 100644
> --- a/log.xsl
> +++ b/log.xsl
> @@ -1,179 +1,176 @@
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> -<xsl:output method="html" indent="yes" />
> +<xsl:output method="html" indent="yes" />
> <xsl:template match="/">
> <html>
> - <head>
> - <title>Libvirt testing log</title>
> - <link rel="stylesheet" href="log.css" type="text/css" media="screen" />
> - <script language="javascript">
> - <![CDATA[
> - var xmlDOc;
> - var xslDoc;
> - var active_result;
> - var active_div_id;
> -
> -
> - function init(logname) {
> - var xmlDoc;
> - var xslDoc;
> -
> - active_result = "TOTAL";
> - expand_last_div();
> - }
> -
> - function expand_last_div() {
> - divs = document.getElementsByTagName('div');
> - last_div = divs[divs.length - 1];
> - last_div.style.display = "block";
> - active_div_id = last_div.attributes['id'].value;
> - }
> -
> - function on_result_clicked(div_id, result){
> - if (result == active_result && active_div_id == div_id)
> - return;
> -
> - active_result = result;
> - active_div_id = div_id;
> -
> - var table = document.getElementById(div_id + "tb");
> - var trs = table.childNodes[1].childNodes;
> -
> - if (result == "TOTAL") {
> - for (var i = 0; i < trs.length; i++) {
> - trs[i].style.display = "table-row";
> - }
> -
> - return;
> - }
> -
> - for (var i = 0; i < trs.length; i++) {
> - var cels = trs[i].childNodes;
> - var is_result = false;
> -
> - for (var j = 0; j < cels.length; j++) {
> -
> - if(cels[j].innerHTML == result) {
> - is_result = true;
> - trs[i].style.display = "table-row";
> - break;
> - }
> - }
> -
> - if (!is_result) {
> - trs[i].style.display = "none";
> - }
> - }
> - }
> -
> - function fold_unfold(id) {
> - div = document.getElementById(id);
> -
> - if (div.style.display == "block") {
> - div.style.display = "none";
> - } else {
> - div.style.display = "block";
> - }
> -
> - /* fold all other divs */
> - /*
> - divs = document.getElementsByTagName('div');
> - for (var i = 0; i < divs.length; i++) {
> - if (divs[i].attributes['id'].value == id) {
> - continue;
> - } else {
> - divs[i].style.display = "none";
> - }
> - }
> - */
> - }
> - ]]>
> - </script>
> - </head>
> - <body onload="init()">
> - <!--<H1>Libvirt testing report</H1>-->
> - <center><img src="icon.png" alt=""/></center>
> - <xsl:for-each select="log/testrun">
> - <xsl:variable name="div_id" select="@name"/>
> - <h2><b><a href="#{$div_id}" onclick="fold_unfold({$div_id})">Testrun@<xsl:value-of select="@name"/></a></b></h2>
> - <DIV id="{$div_id}" style="display: none;">
> - <table border="0" class="statu-list" cellspan="0" cellspacing="0">
> - <tr>
> - <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'TOTAL')">Total</a></th>
> - <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'PASS')">PASS</a></th>
> - <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'FAIL')">FAIL</a></th>
> - <!--<th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'SKIP')">SKIP</a></th>-->
> - <th>Start</th>
> - <th>End</th>
> - </tr>
> - <tr>
> - <td><xsl:value-of select="total"/></td>
> - <td><xsl:value-of select="pass"/></td>
> - <td><xsl:value-of select="fail"/></td>
> - <!--<td><xsl:value-of select="skip"/></td>-->
> - <td><xsl:value-of select="start_time"/></td>
> - <td><xsl:value-of select="end_time"/></td>
> - </tr>
> - </table>
> -
> - <table id="{$div_id}tb" class="list" cellspan="0" cellspacing="0">
> - <thead>
> - <tr>
> - <th width="5%">No.</th>
> - <th width="5%">Result</th>
> - <th width="12%">Start</th>
> - <th width="12%">End</th>
> - <th width="66%">Test Procedure</th>
> - </tr>
> - </thead>
> -
> - <tbody>
> - <xsl:for-each select="test">
> - <tr>
> - <td>
> - <xsl:variable name="link" select="path"/>
> - <a href="{$link}"><xsl:value-of select="@id"/> </a>
> - </td>
> - <xsl:choose>
> - <xsl:when test="result = 'PASS'">
> - <td class="pass"><xsl:value-of select="result"/></td>
> - </xsl:when>
> - <xsl:when test="result = 'FAIL'">
> - <td class="fail"><xsl:value-of select="result"/></td>
> - </xsl:when>
> - <xsl:otherwise>
> - <td></td>
> - </xsl:otherwise>
> - </xsl:choose>
> - <td><xsl:value-of select="start_time"/></td>
> - <td><xsl:value-of select="end_time"/></td>
> - <td>
> - <table class="pro" cellspacing="1" cellspan="0" >
> - <xsl:for-each select="test_procedure">
> - <tr>
> - <td class="li-tit">
> - <xsl:value-of select="action/@name"/><br/>
> - </td>
> - <td>
> - <xsl:for-each select="action/arg">
> - <span>
> - <xsl:value-of select="@name"/>
> - <xsl:text>=</xsl:text>
> - <xsl:value-of select="."/>
> - </span>
> - </xsl:for-each>
> - </td>
> - </tr>
> - </xsl:for-each>
> - </table>
> - </td>
> - </tr>
> - </xsl:for-each>
> - </tbody>
> - </table>
> - </DIV>
> - </xsl:for-each>
> - </body>
> + <head>
> + <title>Libvirt testing log</title>
> + <link rel="stylesheet" href="log.css" type="text/css" media="screen" />
> + <script language="javascript">
> + <![CDATA[
> + var xmlDOc;
> + var xslDoc;
> + var active_result;
> + var active_div_id;
> +
> + function init(logname) {
> + var xmlDoc;
> + var xslDoc;
> +
> + active_result = "TOTAL";
> + expand_last_div();
> + }
> +
> + function expand_last_div() {
> + divs = document.getElementsByTagName('div');
> + last_div = divs[divs.length - 1];
> + last_div.style.display = "block";
> + active_div_id = last_div.attributes['id'].value;
> + }
> +
> + function on_result_clicked(div_id, result){
> + if (result== active_result && active_div_id == div_id)
> + return;
> +
> + active_result = result;
> + active_div_id = div_id;
> +
> + var table = document.getElementById(div_id + "tb");
> + var trs = table.childNodes[1].childNodes;
> +
> + if (result == "TOTAL") {
> + for (var i = 0; i < trs.length; i++) {
> + trs[i].style.display = "table-row";
> + }
> +
> + return;
> + }
> +
> + for (var i = 0; i < trs.length; i++) {
> + var cels = trs[i].childNodes;
> + var is_result = false;
> +
> + for (var j = 0; j < cels.length; j++) {
> + if(cels[j].innerHTML == result) {
> + is_result = true;
> + trs[i].style.display = "table-row";
> + break;
> + }
> + }
> +
> + if (!is_result) {
> + trs[i].style.display = "none";
> + }
> + }
> + }
> +
> + function fold_unfold(id) {
> + div = document.getElementById(id);
> +
> + if (div.style.display == "block") {
> + div.style.display = "none";
> + } else {
> + div.style.display = "block";
> + }
> +
> + /* fold all other divs */
> + /*
> + divs = document.getElementsByTagName('div');
> + for (var i = 0; i < divs.length; i++) {
> + if (divs[i].attributes['id'].value == id) {
> + continue;
> + } else {
> + divs[i].style.display = "none";
> + }
> + }
> + */
> + }
> + ]]>
> + </script>
> + </head>
> + <body onload="init()">
> + <!--<H1>Libvirt testing report</H1>-->
> + <center><img src="icon.png" alt=""/></center>
> + <xsl:for-each select="log/testrun">
> + <xsl:variable name="div_id" select="@name"/>
> + <h2><b><a href="#{$div_id}" onclick="fold_unfold({$div_id})">Testrun <xsl:value-of select="@name"/></a></b></h2>
> + <DIV id="{$div_id}" style="display: none;">
> + <table border="0" class="statu-list" cellspan="0" cellspacing="0">
> + <tr>
> + <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'TOTAL')">Total</a></th>
> + <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'PASS')">PASS</a></th>
> + <th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'FAIL')">FAIL</a></th>
> + <!--<th><a href="#{$div_id}" onclick="on_result_clicked({$div_id}, 'SKIP')">SKIP</a></th>-->
> + <th>Start</th>
> + <th>End</th>
> + </tr>
> + <tr>
> + <td><xsl:value-of select="total"/></td>
> + <td><xsl:value-of select="pass"/></td>
> + <td><xsl:value-of select="fail"/></td>
> + <!--<td><xsl:value-of select="skip"/></td>-->
> + <td><xsl:value-of select="start_time"/></td>
> + <td><xsl:value-of select="end_time"/></td>
> + </tr>
> + </table>
> +
> + <table id="{$div_id}tb" class="list" cellspan="0" cellspacing="0">
> + <thead>
> + <tr>
> + <th width="5%">No.</th>
> + <th width="5%">Result</th>
> + <th width="12%">Start</th>
> + <th width="12%">End</th>
> + <th width="66%">Test Procedure</th>
> + </tr>
> + </thead>
> + <tbody>
> + <xsl:for-each select="test">
> + <tr>
> + <td>
> + <xsl:variable name="link" select="path"/>
> + <a href="{$link}"><xsl:value-of select="@id"/> </a>
> + </td>
> + <xsl:choose>
> + <xsl:when test="result = 'PASS'">
> + <td class="pass"><xsl:value-of select="result"/></td>
> + </xsl:when>
> + <xsl:when test="result = 'FAIL'">
> + <td class="fail"><xsl:value-of select="result"/></td>
> + </xsl:when>
> + <xsl:otherwise>
> + <td></td>
> + </xsl:otherwise>
> + </xsl:choose>
> + <td><xsl:value-of select="start_time"/></td>
> + <td><xsl:value-of select="end_time"/></td>
> + <td>
> + <table class="pro" cellspacing="1" cellspan="0" >
> + <xsl:for-each select="test_procedure">
> + <tr>
> + <td class="li-tit">
> + <xsl:value-of select="action/@name"/>
> + </td>
> + <td>
> + <xsl:for-each select="action/arg">
> + <span>
> + <xsl:value-of select="@name"/>
> + <xsl:text>=</xsl:text>
> + <xsl:value-of select="."/>
> + </span>
> + </xsl:for-each>
> + </td>
> + </tr>
> + </xsl:for-each>
> + </table>
> + </td>
> + </tr>
> + </xsl:for-each>
> + </tbody>
> + </table>
> + </DIV>
> + </xsl:for-each>
> + </body>
> </html>
> </xsl:template>
> </xsl:stylesheet>
ACK, looks way better this way.
Martin
More information about the libvir-list
mailing list