d0711b27ee
Otherwise it clashes with the website stylesheet.
205 lines
5.5 KiB
XML
205 lines
5.5 KiB
XML
<?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-protocol.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: -->
|