Bumped package version to 1.0.6.
[profile/ivi/wayland.git] / doc / Wayland / protocol-to-docbook.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="xml" indent="yes" encoding="UTF-8"/>
4 <xsl:output method="xml" encoding="UTF-8" indent="yes" />
5
6 <xsl:template match="/">
7   <!-- insert docbook's DOCTYPE blurb -->
8     <xsl:text disable-output-escaping = "yes"><![CDATA[
9 <!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
10   <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
11 %BOOK_ENTITIES;
12 ]>
13 ]]></xsl:text>
14
15   <appendix id="appe-Wayland-Protocol">
16     <title>Wayland Protocol Specification</title>
17     <xsl:apply-templates select="protocol/copyright" />
18
19     <xsl:apply-templates select="protocol/interface" />
20   </appendix>
21 </xsl:template>
22
23 <!-- Break text blocks separated by two new lines into paragraphs -->
24 <xsl:template name="break">
25      <xsl:param name="text" />
26      <xsl:param name="linebreak" select="'&#10;&#10;'" />
27      <xsl:choose>
28        <xsl:when test="contains($text,$linebreak)">
29          <para>
30            <xsl:value-of select="substring-before($text,$linebreak)" />
31          </para>
32          <xsl:call-template name="break">
33            <xsl:with-param name="text" select="substring-after($text,$linebreak)" />
34          </xsl:call-template>
35        </xsl:when>
36        <xsl:otherwise>
37          <para><xsl:value-of select="$text" /></para>
38        </xsl:otherwise>
39      </xsl:choose>
40 </xsl:template>
41
42 <!-- Copyright blurb -->
43 <xsl:template match="copyright">
44   <para>
45     <literallayout>
46       <xsl:value-of select="." disable-output-escaping="yes"/>
47     </literallayout>
48   </para>
49 </xsl:template>
50
51 <!-- Interface descriptions -->
52 <xsl:template match="interface" >
53   <section>
54     <xsl:attribute name="id">protocol-spec-<xsl:value-of select="name()"/>-<xsl:value-of select="@name" />
55     </xsl:attribute>
56     <title>
57       <xsl:value-of select="@name" />
58       <!-- only show summary if it exists -->
59       <xsl:if test="description/@summary">
60         - <xsl:value-of select="description/@summary" />
61       </xsl:if>
62     </title>
63     <xsl:call-template name="break">
64       <xsl:with-param name="text" select="description" />
65     </xsl:call-template>
66     <xsl:if test="request">
67       <section>
68         <title>Requests provided by <xsl:value-of select="@name" /></title>
69         <xsl:apply-templates select="request" />
70       </section>
71     </xsl:if>
72     <xsl:if test="event">
73       <section>
74         <title>Events provided by <xsl:value-of select="@name" /></title>
75         <xsl:apply-templates select="event" />
76       </section>
77     </xsl:if>
78     <xsl:if test="enum">
79       <section>
80         <title>Enums provided by <xsl:value-of select="@name" /></title>
81       <xsl:apply-templates select="enum" />
82       </section>
83     </xsl:if>
84   </section>
85 </xsl:template>
86
87 <!-- table contents for request/event arguments or enum values -->
88 <xsl:template match="arg|entry">
89   <varlistentry>
90     <term><xsl:value-of select="@name"/></term>
91     <listitem>
92         <xsl:if test="name() = 'arg'" >
93           <para>Type: <xsl:value-of select="@type"/></para>
94         </xsl:if>
95         <xsl:if test="name() = 'entry'" >
96           <para>Value: <xsl:value-of select="@value"/></para>
97         </xsl:if>
98       <para>
99         <xsl:value-of select="@summary"/>
100       </para>
101     </listitem>
102   </varlistentry>
103 </xsl:template>
104
105 <!-- Request/event list -->
106 <xsl:template match="request|event|enum">
107   <section>
108     <xsl:attribute name="id">protocol-spec-interface-<xsl:value-of select="../@name"/>-<xsl:value-of select="name()"/>-<xsl:value-of select="@name"/></xsl:attribute>
109     <title>
110       <xsl:value-of select="../@name"/>::<xsl:value-of select="@name" />
111       <xsl:if test="description/@summary">
112         - <xsl:value-of select="description/@summary" />
113       </xsl:if>
114     </title>
115     <xsl:call-template name="break">
116       <xsl:with-param name="text" select="description" />
117     </xsl:call-template>
118     <xsl:if test="arg">
119       <variablelist>
120         <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> arguments</title>
121         <xsl:apply-templates select="arg"/>
122       </variablelist>
123     </xsl:if>
124     <xsl:if test="entry">
125       <variablelist>
126         <title><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /> values</title>
127           <xsl:apply-templates select="entry"/>
128       </variablelist>
129     </xsl:if>
130   </section>
131 </xsl:template>
132 </xsl:stylesheet>
133
134 <!-- vim: set expandtab shiftwidth=2: -->