453b897d53a8e54a0da1e7bf86f7ccc13fc5ff3d
[profile/ivi/wayland.git] / protocol / protocol.xsl
1 <?xml version="1.0" ?>
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="/">
6 <html>
7   <head>
8     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
9     <link href="wayland-protocol.css" rel="stylesheet" type="text/css" />
10     <title>Wayland</title>
11   </head>
12   <body>
13     <h1><img src="wayland.png" alt="Wayland logo" /></h1>
14     <h1>Wayland Protocol Specification</h1>
15
16     <!-- Copyright blurb -->
17     <xsl:apply-templates select="protocol/copyright"/>
18
19     <!-- TOC -->
20     <xsl:apply-templates select="protocol" mode="toc" />
21
22     <!-- Interface descriptions -->
23     <xsl:apply-templates select="protocol/interface" mode="interface_description" />
24
25   </body>
26 </html>
27 </xsl:template>
28
29 <!-- Copyright blurb -->
30 <xsl:template match="copyright">
31   <div>
32     <pre class="copyright">
33       <xsl:value-of select="." disable-output-escaping="yes"/>
34     </pre>
35   </div>
36 </xsl:template>
37
38 <!-- TOC -->
39 <xsl:template match="protocol" mode="toc">
40   <div class="toc">
41     <h2>Table of Contents</h2>
42     <ul>
43       <xsl:apply-templates select="interface" mode="toc" />
44     </ul>
45   </div>
46 </xsl:template>
47
48 <!-- interface in TOC -->
49 <xsl:template match="interface" mode="toc">
50   <li>
51     <xsl:call-template name="link">
52       <xsl:with-param name="which" select="'href'" />
53     </xsl:call-template>
54
55     <!-- request list -->
56     <xsl:if test="request">
57       <div>
58         Requests:
59         <ul>
60           <xsl:apply-templates select="request" mode="toc"/>
61         </ul>
62       </div>
63     </xsl:if>
64
65     <!-- event list -->
66     <xsl:if test="event">
67       <div>
68         Events:
69         <ul>
70           <xsl:apply-templates select="event" mode="toc"/>
71         </ul>
72       </div>
73     </xsl:if>
74
75     <!-- enum list -->
76     <xsl:if test="enum">
77       <div>
78         Enums:
79         <ul>
80           <xsl:apply-templates select="enum" mode="toc"/>
81         </ul>
82       </div>
83     </xsl:if>
84   </li>
85 </xsl:template>
86
87 <!--
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
92 -->
93 <xsl:template name="link" >
94   <xsl:param name="which" />
95   <a>
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>
107       </xsl:if>
108   </a>
109 </xsl:template>
110
111 <!-- requests and events in TOC -->
112 <xsl:template match="request|event|enum" mode="toc">
113   <li>
114     <xsl:call-template name="link">
115       <xsl:with-param name="which" select="'href'" />
116     </xsl:call-template>
117   </li>
118 </xsl:template>
119
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'" />
125     </xsl:call-template>
126     <h1>
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" />
131       </xsl:if>
132     </h1>
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">
137         <h2>Requests</h2>
138         <!-- Request list -->
139         <xsl:apply-templates select="request" mode="interface_description" />
140       </div>
141     </xsl:if>
142
143     <xsl:if test="event">
144       <div class="events">
145         <h2>Events</h2>
146         <!-- Event list -->
147         <xsl:apply-templates select="event" mode="interface_description" />
148       </div>
149     </xsl:if>
150
151     <xsl:if test="enum">
152       <div class="enums">
153         <h2>Enums</h2>
154         <!-- enum list -->
155         <xsl:apply-templates select="enum" mode="interface_description"/>
156       </div>
157     </xsl:if>
158   </div>
159 </xsl:template>
160
161 <!-- table contents for request/event arguments or enum values -->
162 <xsl:template match="arg|entry">
163   <tr>
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>
167     </xsl:if>
168     <xsl:if test="name() = 'entry'" >
169       <td class="arg_value"><xsl:value-of select="@value"/></td>
170     </xsl:if>
171     <td class="arg_desc"><xsl:value-of select="@summary"/></td>
172   </tr>
173 </xsl:template>
174
175 <!-- Request/event list -->
176 <xsl:template match="request|event|enum" mode="interface_description">
177   <div>
178     <xsl:call-template name="link">
179       <xsl:with-param name="which" select="'name'" />
180     </xsl:call-template>
181     <h3>
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" />
185       </xsl:if>
186     </h3>
187     <p><xsl:value-of select="description"/></p>
188     <xsl:if test="arg">
189       Arguments:
190       <table>
191         <xsl:apply-templates select="arg"/>
192       </table>
193     </xsl:if>
194     <xsl:if test="entry">
195       Values:
196       <table>
197         <xsl:apply-templates select="entry"/>
198       </table>
199     </xsl:if>
200   </div>
201 </xsl:template>
202 </xsl:stylesheet>
203
204 <!-- vim: set expandtab shiftwidth=2: -->