2011-01-09 17:58:52 +00:00
|
|
|
|
<?xml version="1.0"?>
|
|
|
|
|
|
|
|
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
|
|
|
|
|
|
|
<xsl:output method='html' encoding="UTF-8"
|
|
|
|
|
doctype-public="-//W3C//DTD HTML 4.01//EN"
|
|
|
|
|
doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
|
|
|
|
|
|
|
|
|
|
<xsl:template match="logfile">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<script type="text/javascript" src="jquery.min.js"></script>
|
|
|
|
|
<script type="text/javascript" src="jquery-ui.min.js"></script>
|
|
|
|
|
<script type="text/javascript" src="treebits.js" />
|
|
|
|
|
<link rel="stylesheet" href="logfile.css" type="text/css" />
|
|
|
|
|
<title>Log File</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
2011-01-10 15:17:38 +00:00
|
|
|
|
<h1>VM build log</h1>
|
|
|
|
|
<p>
|
|
|
|
|
<a href="javascript:" class="logTreeExpandAll">Expand all</a> |
|
|
|
|
|
<a href="javascript:" class="logTreeCollapseAll">Collapse all</a>
|
|
|
|
|
</p>
|
2011-01-09 17:58:52 +00:00
|
|
|
|
<ul class='toplevel'>
|
|
|
|
|
<xsl:for-each select='line|nest'>
|
|
|
|
|
<li>
|
|
|
|
|
<xsl:apply-templates select='.'/>
|
|
|
|
|
</li>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</ul>
|
2011-01-10 15:17:38 +00:00
|
|
|
|
|
|
|
|
|
<xsl:if test=".//*[@image]">
|
|
|
|
|
<h1>Screenshots</h1>
|
|
|
|
|
<ul class="vmScreenshots">
|
|
|
|
|
<xsl:for-each select='.//*[@image]'>
|
|
|
|
|
<li><a href="{@image}"><xsl:value-of select="@image" /></a></li>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</ul>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
2011-01-09 17:58:52 +00:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="nest">
|
|
|
|
|
|
|
|
|
|
<!-- The tree should be collapsed by default if all children are
|
|
|
|
|
unimportant or if the header is unimportant. -->
|
|
|
|
|
<xsl:variable name="collapsed" select="not(./head[@expanded]) and count(.//*[@error]) = 0"/>
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="style"><xsl:if test="$collapsed">display: none;</xsl:if></xsl:variable>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="line|nest">
|
2011-01-10 15:29:22 +00:00
|
|
|
|
<a href="javascript:" class="logTreeToggle">
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="$collapsed"><xsl:text>+</xsl:text></xsl:when>
|
|
|
|
|
<xsl:otherwise><xsl:text>-</xsl:text></xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</a>
|
2011-01-09 17:58:52 +00:00
|
|
|
|
<xsl:text> </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select='head'/>
|
|
|
|
|
|
|
|
|
|
<!-- Be careful to only generate <ul>s if there are <li>s, otherwise it’s malformed. -->
|
|
|
|
|
<xsl:if test="line|nest">
|
|
|
|
|
|
|
|
|
|
<ul class='nesting' style="{$style}">
|
|
|
|
|
<xsl:for-each select='line|nest'>
|
|
|
|
|
|
|
|
|
|
<!-- Is this the last line? If so, mark it as such so that it
|
|
|
|
|
can be rendered differently. -->
|
2011-01-10 15:29:22 +00:00
|
|
|
|
<xsl:variable name="class"><xsl:choose><xsl:when test="position() != last()">line</xsl:when><xsl:otherwise>lastline</xsl:otherwise></xsl:choose></xsl:variable>
|
2011-01-09 17:58:52 +00:00
|
|
|
|
|
|
|
|
|
<li class='{$class}'>
|
|
|
|
|
<span class='lineconn' />
|
|
|
|
|
<span class='linebody'>
|
|
|
|
|
<xsl:apply-templates select='.'/>
|
|
|
|
|
</span>
|
|
|
|
|
</li>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</ul>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="head|line">
|
|
|
|
|
<code>
|
|
|
|
|
<xsl:if test="@error">
|
|
|
|
|
<xsl:attribute name="class">errorLine</xsl:attribute>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@warning">
|
|
|
|
|
<xsl:attribute name="class">warningLine</xsl:attribute>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@priority = 3">
|
|
|
|
|
<xsl:attribute name="class">prio3</xsl:attribute>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="@type = 'serial'">
|
|
|
|
|
<xsl:attribute name="class">serial</xsl:attribute>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="@machine">
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="@type = 'serial'">
|
|
|
|
|
<span class="machine"><xsl:value-of select="@machine"/># </span>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
<xsl:otherwise>
|
|
|
|
|
<span class="machine"><xsl:value-of select="@machine"/>: </span>
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="@image">
|
|
|
|
|
<a href="{@image}"><xsl:apply-templates/></a>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
<xsl:otherwise>
|
|
|
|
|
<xsl:apply-templates/>
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</code>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="storeref">
|
|
|
|
|
<em class='storeref'>
|
|
|
|
|
<span class='popup'><xsl:apply-templates/></span>
|
|
|
|
|
<span class='elided'>/...</span><xsl:apply-templates select='name'/><xsl:apply-templates select='path'/>
|
|
|
|
|
</em>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
</xsl:stylesheet>
|