<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="html" omit-xml-declaration="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/> <xsl:template match="matrices"> <html lang="{@xml:lang}"> <head> <meta http-equiv="Content-Language" content="{@xml:lang}"/> <title><xsl:value-of select="metainfo/title"/></title> <meta name="description" content="{metainfo/shortdesc}"/> <xsl:if test="count(//section) != 1"> <xsl:for-each select="//section"> <link rel="Bookmark" href="#{generate-id(info/heading)}" title="{info/heading}"/> </xsl:for-each> </xsl:if> <link rel="Bookmark" href="#column-explanation" title="Column headings explanation"/> <style type="text/css"> <xsl:text disable-output-escaping="yes"> body { color: black; background: white; font-family: "Myriad Web", "Arial Unicode MS", Helvetica, Arial, Geneva, sans-serif; padding: 1em 5%; margin: 0; } p, ul { max-width: 32em; margin-left: auto; margin-right: auto; } p#updated { text-align: right; margin: 1em 0; } li { margin-left: 3em; } h1 { text-align: center; } dt { font-weight: bold; } table { margin: 0 auto 2em auto; } td, th { text-align: center; } td.percent-column { text-align: right; } td.first-column { text-align: left; padding-right: 1em; } td.legend-explanation { text-align: left; padding-left: 1em; } td.yes { background: #73ab73; color: white; border-color: #73ab73; } td.no { background: #9a6262; color: white; border-color: #9a6262; } td.partially { background: #d8d89c; color: black; border-color: #d8d89c; } td.unknown { background: #b38fbf; color: black; border-color: #b38fbf; } td.buggy { background: #bea888; color: black; border-color: #bea888; } td.later { background: #519b84; color: white; border-color: #519b84; } td.na { background: white; color: black; border-color: white; } td :link, td :visited { color: white !important; background: transparent; } td.partially :link, td.partially :visited, td.buggy :link, td.buggy :visited, td.na :link, td.na :visited { color: black !important; background: transparent; } td.yes, td.no, td.partially, td.unknown, td.na, td.buggy, td.later { border-style: outset; border-width: 1px; } </xsl:text> </style> </head> <body> <h1><xsl:apply-templates select="metainfo/title"/></h1> <xsl:apply-templates select="metainfo"/> <p>An explanation of the <a href="#column-explanation" title="Column headings explanation">column headings</a> is available at the bottom of the document.</p> <hr/> <h2>Legend</h2> <table class="table" cellpadding="4" cellspacing="0"> <colgroup/> <colgroup/> <tbody> <tr><td class="yes">yes</td> <td class="legend-explanation">This feature is done/working.</td></tr> <tr><td class="later">later</td> <td class="legend-explanation">This feature is not planned for 1.0. If you send us code, you will change our minds.</td></tr> <tr><td class="partially">partially</td> <td class="legend-explanation">This feature is partially done, but needs work.</td></tr> <tr><td class="buggy">buggy</td> <td class="legend-explanation">This feature is done, but is too bug-ridden to be usable.</td></tr> <tr><td class="no">no</td> <td class="legend-explanation">This feature is not implemented.</td></tr> <tr><td class="unknown">unknown</td> <td class="legend-explanation">The status of this feature is unknown.</td></tr> <tr><td class="na"><abbr title="not applicable">n/a</abbr></td> <td class="legend-explanation">Not applicable.</td></tr> </tbody> </table> <xsl:for-each select="section"> <hr/> <xsl:apply-templates select="info"/> <xsl:for-each select="matrix"> <xsl:apply-templates/> </xsl:for-each> </xsl:for-each> <hr/> <h2><a name="column-explanation">Column explanation</a></h2> <dl> <xsl:for-each select="//header/row/cell"> <xsl:if test="text()"> <dt><xsl:value-of select="@value"/></dt> <dd><xsl:apply-templates/></dd> </xsl:if> </xsl:for-each> <dt>Total</dt> <dd>The percentage of cells on the current row where this feature is completely done/working.</dd> </dl> <hr/> <p id="updated">Last updated: <xsl:value-of select="@updated"/></p> </body> </html> </xsl:template> <xsl:template match="header"> <thead> <xsl:for-each select="row"> <tr><xsl:apply-templates/><th title="The percentage of cells on the current row where this feature is completely done/working.">Total</th></tr> </xsl:for-each> </thead> </xsl:template> <xsl:template match="cell"> <xsl:apply-templates/> </xsl:template> <xsl:template match="header/row/cell"> <th title="{.}"><xsl:value-of select="@value"/></th> </xsl:template> <xsl:template match="emph"> <em><xsl:apply-templates/></em> </xsl:template> <xsl:template match="metainfo"> <xsl:apply-templates select="shortdesc | longdesc"/> </xsl:template> <xsl:template match="longdesc"> <xsl:apply-templates/> </xsl:template> <xsl:template match="shortdesc"> <p><xsl:apply-templates/><xsl:if test="count(//section) != 1"><xsl:text> </xsl:text>It's divided into <xsl:value-of select="count(//section)"/> categories:</xsl:if></p> <xsl:if test="count(//section) != 1"> <ul> <xsl:for-each select="//section"> <li><a href="#{generate-id(info/heading)}" title="Category: {info/heading}"><xsl:apply-templates select="info/heading"/></a></li> </xsl:for-each> </ul> </xsl:if> </xsl:template> <xsl:template match="para"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="list"> <ul><xsl:apply-templates/></ul> </xsl:template> <xsl:template match="list/item"> <li><xsl:apply-templates/></li> </xsl:template> <xsl:template match="section/info"> <h2><a name="{generate-id(heading)}"><xsl:apply-templates select="heading"/></a></h2> <xsl:apply-templates select="description"/> </xsl:template> <xsl:template match="section/info/heading"> <xsl:apply-templates/> </xsl:template> <xsl:template match="info/description"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="matrix/info/heading"> <h3><xsl:apply-templates/></h3> </xsl:template> <xsl:template match="matrix/body"> <table class="table" cellpadding="4" cellspacing="0"> <colgroup/> <colgroup span="{count(//header/row/cell)-1}"/> <xsl:apply-templates select="//header"/> <tbody> <xsl:for-each select="row"> <tr> <xsl:for-each select="cell"> <td> <xsl:if test="@value"> <xsl:attribute name="class"> <xsl:value-of select="@value"/> </xsl:attribute> </xsl:if> <xsl:if test="position()=1"> <xsl:attribute name="class">first-column</xsl:attribute> </xsl:if> <xsl:choose> <xsl:when test="text() or bug or pow"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@value='na'"> <abbr title="not applicable">n/a</abbr> </xsl:when> <xsl:otherwise> <xsl:value-of select="@value"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </td> </xsl:for-each> <td class="percent-column"><xsl:number format="1" value="100 * count(cell[@value='yes' or @value='na']) div (count(cell)-1)"/> %</td> </tr> </xsl:for-each> <tr> <td class="first-column">Total</td> <xsl:for-each select="row[1]/cell[position() != '1']"> <xsl:variable name="pos" select="position()+1"/> <td class="percent-row"> <xsl:number format="1" value="100 * count(../../row/cell[position() = $pos and (@value='yes' or @value='na')]) div count(../../row/cell[position() = $pos])"/> % </td> </xsl:for-each> </tr> </tbody> </table> </xsl:template> <xsl:template match="bug"> <a href="http://www.abisource.com/bugzilla/show_bug.cgi?id={@id}" title="BugZilla bug report #{@id}"><xsl:value-of select="@id"/></a> </xsl:template> <xsl:template match="pow"> <a href="{@uri}"><abbr title="Project of the Week">POW</abbr></a> </xsl:template> <xsl:template match="abbr"> <abbr> <xsl:if test="@title"> <xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute> </xsl:if> <xsl:apply-templates/></abbr> </xsl:template> </xsl:stylesheet>