2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <xsl:output method="html" indent="yes" encoding="UTF-8"/>
4 <xsl:preserve-space elements="copyright"/>
5 <xsl:template match="/">
8 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
9 <link href="wayland.css" rel="stylesheet" type="text/css" />
10 <title>Wayland</title>
13 <h1><img src="wayland.png" alt="Wayland logo" /></h1>
14 <h1>Wayland Protocol Specification</h1>
16 <!-- Copyright blurb -->
17 <xsl:apply-templates select="protocol/copyright"/>
20 <xsl:apply-templates select="protocol" mode="toc" />
22 <!-- Interface descriptions -->
23 <xsl:apply-templates select="protocol/interface" mode="interface_description" />
29 <!-- Copyright blurb -->
30 <xsl:template match="copyright">
32 <pre class="copyright">
33 <xsl:value-of select="." disable-output-escaping="yes"/>
39 <xsl:template match="protocol" mode="toc">
41 <h2>Table of Contents</h2>
43 <xsl:apply-templates select="interface" mode="toc" />
48 <!-- interface in TOC -->
49 <xsl:template match="interface" mode="toc">
51 <xsl:call-template name="link">
52 <xsl:with-param name="which" select="'href'" />
56 <xsl:if test="request">
60 <xsl:apply-templates select="request" mode="toc"/>
70 <xsl:apply-templates select="event" mode="toc"/>
80 <xsl:apply-templates select="enum" mode="toc"/>
88 Template to create a <a> tag in the form
89 #<interfacename>-<request|event>-<request/event name>
90 the '#' prefix is added if $which is 'href'
91 $which decides which attribute name (href or name) of <a> to set
93 <xsl:template name="link" >
94 <xsl:param name="which" />
96 <xsl:attribute name="{$which}">
97 <xsl:if test="$which = 'href'">#</xsl:if>
98 <xsl:value-of select="../@name"/>
99 <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace -->
100 <xsl:value-of select="name()"/>
101 <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace -->
102 <xsl:value-of select="@name"/></xsl:attribute>
103 <!-- only display link text for href links -->
104 <xsl:if test="$which = 'href'">
105 <span class="mono"><xsl:value-of select="@name"/></span>
106 <xsl:if test="description/@summary"> - <xsl:value-of select="description/@summary"/></xsl:if>
111 <!-- requests and events in TOC -->
112 <xsl:template match="request|event|enum" mode="toc">
114 <xsl:call-template name="link">
115 <xsl:with-param name="which" select="'href'" />
120 <!-- Interface descriptions -->
121 <xsl:template match="protocol/interface" mode="interface_description">
122 <div class="interface">
123 <xsl:call-template name="link">
124 <xsl:with-param name="which" select="'name'" />
127 <span class="mono"><xsl:value-of select="@name" /></span>
128 <!-- only show summary if it exists -->
129 <xsl:if test="description/@summary">
130 - <xsl:value-of select="description/@summary" />
133 <p class="version">Version: <xsl:value-of select="@version" /></p>
134 <p><xsl:value-of select="description"/></p>
135 <xsl:if test="request">
136 <div class="requests">
138 <!-- Request list -->
139 <xsl:apply-templates select="request" mode="interface_description" />
143 <xsl:if test="event">
147 <xsl:apply-templates select="event" mode="interface_description" />
155 <xsl:apply-templates select="enum" mode="interface_description"/>
161 <!-- table contents for request/event arguments or enum values -->
162 <xsl:template match="arg|entry">
164 <td class="arg_name"><xsl:value-of select="@name"/></td>
165 <xsl:if test="name() = 'arg'" >
166 <td class="arg_type"><xsl:value-of select="@type"/></td>
168 <xsl:if test="name() = 'entry'" >
169 <td class="arg_value"><xsl:value-of select="@value"/></td>
171 <td class="arg_desc"><xsl:value-of select="@summary"/></td>
175 <!-- Request/event list -->
176 <xsl:template match="request|event|enum" mode="interface_description">
178 <xsl:call-template name="link">
179 <xsl:with-param name="which" select="'name'" />
182 <span class="mono"><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /></span>
183 <xsl:if test="description/@summary">
184 - <xsl:value-of select="description/@summary" />
187 <p><xsl:value-of select="description"/></p>
191 <xsl:apply-templates select="arg"/>
194 <xsl:if test="entry">
197 <xsl:apply-templates select="entry"/>
204 <!-- vim: set expandtab shiftwidth=2: -->