diff options
| author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-02-23 15:58:37 +1000 |
|---|---|---|
| committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-02-23 16:03:58 -0500 |
| commit | 015c42e1b1c758669d8adacf4bd174ce934a43f5 (patch) | |
| tree | 7dd84120a5608aeb4f239436920401c760e38227 /protocol/protocol.xsl | |
| parent | protocol: fix missing hyphenation for "client-created" (diff) | |
| download | wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar.gz wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar.bz2 wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar.lz wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar.xz wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.tar.zst wayland-015c42e1b1c758669d8adacf4bd174ce934a43f5.zip | |
protocol: add xslt stylesheet to prettify the protocol
Includes rudimentary styling only.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'protocol/protocol.xsl')
| -rw-r--r-- | protocol/protocol.xsl | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/protocol/protocol.xsl b/protocol/protocol.xsl new file mode 100644 index 0000000..b2867f0 --- /dev/null +++ b/protocol/protocol.xsl @@ -0,0 +1,204 @@ +<?xml version="1.0" ?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="html" indent="yes" encoding="UTF-8"/> +<xsl:preserve-space elements="copyright"/> +<xsl:template match="/"> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> + <link href="wayland.css" rel="stylesheet" type="text/css" /> + <title>Wayland</title> + </head> + <body> + <h1><img src="wayland.png" alt="Wayland logo" /></h1> + <h1>Wayland Protocol Specification</h1> + + <!-- Copyright blurb --> + <xsl:apply-templates select="protocol/copyright"/> + + <!-- TOC --> + <xsl:apply-templates select="protocol" mode="toc" /> + + <!-- Interface descriptions --> + <xsl:apply-templates select="protocol/interface" mode="interface_description" /> + + </body> +</html> +</xsl:template> + +<!-- Copyright blurb --> +<xsl:template match="copyright"> + <div> + <pre class="copyright"> + <xsl:value-of select="." disable-output-escaping="yes"/> + </pre> + </div> +</xsl:template> + +<!-- TOC --> +<xsl:template match="protocol" mode="toc"> + <div class="toc"> + <h2>Table of Contents</h2> + <ul> + <xsl:apply-templates select="interface" mode="toc" /> + </ul> + </div> +</xsl:template> + +<!-- interface in TOC --> +<xsl:template match="interface" mode="toc"> + <li> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'href'" /> + </xsl:call-template> + + <!-- request list --> + <xsl:if test="request"> + <div> + Requests: + <ul> + <xsl:apply-templates select="request" mode="toc"/> + </ul> + </div> + </xsl:if> + + <!-- event list --> + <xsl:if test="event"> + <div> + Events: + <ul> + <xsl:apply-templates select="event" mode="toc"/> + </ul> + </div> + </xsl:if> + + <!-- enum list --> + <xsl:if test="enum"> + <div> + Enums: + <ul> + <xsl:apply-templates select="enum" mode="toc"/> + </ul> + </div> + </xsl:if> + </li> +</xsl:template> + +<!-- + Template to create a <a> tag in the form + #<interfacename>-<request|event>-<request/event name> + the '#' prefix is added if $which is 'href' + $which decides which attribute name (href or name) of <a> to set +--> +<xsl:template name="link" > + <xsl:param name="which" /> + <a> + <xsl:attribute name="{$which}"> + <xsl:if test="$which = 'href'">#</xsl:if> + <xsl:value-of select="../@name"/> + <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace --> + <xsl:value-of select="name()"/> + <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace --> + <xsl:value-of select="@name"/></xsl:attribute> + <!-- only display link text for href links --> + <xsl:if test="$which = 'href'"> + <span class="mono"><xsl:value-of select="@name"/></span> + <xsl:if test="description/@summary"> - <xsl:value-of select="description/@summary"/></xsl:if> + </xsl:if> + </a> +</xsl:template> + +<!-- requests and events in TOC --> +<xsl:template match="request|event|enum" mode="toc"> + <li> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'href'" /> + </xsl:call-template> + </li> +</xsl:template> + +<!-- Interface descriptions --> +<xsl:template match="protocol/interface" mode="interface_description"> + <div class="interface"> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'name'" /> + </xsl:call-template> + <h1> + <span class="mono"><xsl:value-of select="@name" /></span> + <!-- only show summary if it exists --> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </h1> + <p class="version">Version: <xsl:value-of select="@version" /></p> + <p><xsl:value-of select="description"/></p> + <xsl:if test="request"> + <div class="requests"> + <h2>Requests</h2> + <!-- Request list --> + <xsl:apply-templates select="request" mode="interface_description" /> + </div> + </xsl:if> + + <xsl:if test="event"> + <div class="events"> + <h2>Events</h2> + <!-- Event list --> + <xsl:apply-templates select="event" mode="interface_description" /> + </div> + </xsl:if> + + <xsl:if test="enum"> + <div class="enums"> + <h2>Enums</h2> + <!-- enum list --> + <xsl:apply-templates select="enum" mode="interface_description"/> + </div> + </xsl:if> + </div> +</xsl:template> + +<!-- table contents for request/event arguments or enum values --> +<xsl:template match="arg|entry"> + <tr> + <td class="arg_name"><xsl:value-of select="@name"/></td> + <xsl:if test="name() = 'arg'" > + <td class="arg_type"><xsl:value-of select="@type"/></td> + </xsl:if> + <xsl:if test="name() = 'entry'" > + <td class="arg_value"><xsl:value-of select="@value"/></td> + </xsl:if> + <td class="arg_desc"><xsl:value-of select="@summary"/></td> + </tr> +</xsl:template> + +<!-- Request/event list --> +<xsl:template match="request|event|enum" mode="interface_description"> + <div> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'name'" /> + </xsl:call-template> + <h3> + <span class="mono"><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /></span> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </h3> + <p><xsl:value-of select="description"/></p> + <xsl:if test="arg"> + Arguments: + <table> + <xsl:apply-templates select="arg"/> + </table> + </xsl:if> + <xsl:if test="entry"> + Values: + <table> + <xsl:apply-templates select="entry"/> + </table> + </xsl:if> + </div> +</xsl:template> +</xsl:stylesheet> + +<!-- vim: set expandtab shiftwidth=2: --> |
