api.xsl revision f85925628ac8b50c0a5339fccd861aedf46c2f00
1<?xml version="1.0"?>
2<xsl:stylesheet version="1.0"
3  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4  xmlns:exsl="http://exslt.org/common"
5  extension-element-prefixes="exsl"
6  exclude-result-prefixes="exsl">
7
8  <!-- Import the resto of the site stylesheets -->
9  <xsl:import href="site.xsl"/>
10
11  <xsl:variable name="apirefs" select="document('libxml2-refs.xml')"/>
12  <xsl:variable name="module" select="$apirefs/apirefs/@name"/>
13  <xsl:key name="refhref" match="reference" use="@name"/>
14
15  <xsl:template match="ref" mode="anchor">
16    <xsl:variable name="name" select="@name"/>
17    <xsl:for-each select="document('libxml2-refs.xml')">
18	<a href="{key('refhref', $name)/@href}"><xsl:value-of select="$name"/></a>
19    </xsl:for-each>
20  </xsl:template>
21  <xsl:template match="type" mode="reflist">
22    <h2>Type <xsl:value-of select="@name"/>:</h2>
23    <p>
24      <xsl:for-each select="ref">
25        <xsl:apply-templates mode="anchor" select="."/>
26	<xsl:text>
27</xsl:text>
28      </xsl:for-each>
29    </p>
30  </xsl:template>
31  <xsl:template match="letter" mode="reflist">
32    <h2>Letter <xsl:value-of select="@name"/>:</h2>
33    <p>
34      <xsl:for-each select="ref">
35        <xsl:apply-templates mode="anchor" select="."/>
36	<xsl:text>
37</xsl:text>
38      </xsl:for-each>
39    </p>
40  </xsl:template>
41  <xsl:template match="file" mode="reflist">
42    <h2>Module <xsl:value-of select="@name"/>:</h2>
43    <p>
44      <xsl:for-each select="ref">
45        <xsl:apply-templates mode="anchor" select="."/>
46	<xsl:text>
47</xsl:text>
48      </xsl:for-each>
49    </p>
50  </xsl:template>
51  <xsl:template match="letter" mode="wordlist">
52    <h2>Letter <xsl:value-of select="@name"/>:</h2>
53    <dl>
54      <xsl:for-each select="word">
55        <dt><xsl:value-of select="@name"/></dt>
56	<dd>
57	<xsl:for-each select="ref">
58	  <xsl:apply-templates mode="anchor" select="."/>
59	  <xsl:text>
60</xsl:text>
61	</xsl:for-each>
62	</dd>
63      </xsl:for-each>
64    </dl>
65  </xsl:template>
66
67  <xsl:template match="constructors">
68    <xsl:message>Generating API Constructors</xsl:message>
69    <xsl:variable name="title">List of constructors for <xsl:value-of select="$module"/></xsl:variable>
70    <xsl:document href="APIconstructors.html" method="html" version="4.01" encoding="ISO-8859-1">
71      <html>
72        <head>
73        <xsl:call-template name="style"/>
74	<xsl:element name="title">
75	  <xsl:value-of select="$title"/>
76	</xsl:element>
77        </head>
78        <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
79          <xsl:call-template name="titlebox">
80	    <xsl:with-param name="title" select="$title"/>
81	  </xsl:call-template>
82          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
83            <tr>
84              <td bgcolor="#8b7765">
85                <table border="0" cellspacing="0" cellpadding="2" width="100%">
86                  <tr>
87                    <td valign="top" width="200" bgcolor="#8b7765">
88                      <xsl:call-template name="toc"/>
89                    </td>
90                    <td valign="top" bgcolor="#8b7765">
91                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
92                        <tr>
93                          <td>
94                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
95                              <tr>
96                                <td>
97                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
98                                    <tr>
99                                      <td bgcolor="#fffacd">
100				        <xsl:apply-templates mode="reflist" select="type"/>
101					<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
102                                      </td>
103                                    </tr>
104                                  </table>
105                                </td>
106                              </tr>
107                            </table>
108                          </td>
109                        </tr>
110                      </table>
111                    </td>
112                  </tr>
113                </table>
114              </td>
115            </tr>
116          </table>
117        </body>
118      </html>
119    </xsl:document>
120  </xsl:template>
121  <xsl:template match="files">
122    <xsl:message>Generating API List of synbols per file</xsl:message>
123    <xsl:variable name="title">List of Symbols per Module for <xsl:value-of select="$module"/></xsl:variable>
124    <xsl:document href="APIfiles.html" method="html" version="4.01" encoding="ISO-8859-1">
125      <html>
126        <head>
127        <xsl:call-template name="style"/>
128	<xsl:element name="title">
129	  <xsl:value-of select="$title"/>
130	</xsl:element>
131        </head>
132        <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
133          <xsl:call-template name="titlebox">
134	    <xsl:with-param name="title" select="$title"/>
135	  </xsl:call-template>
136          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
137            <tr>
138              <td bgcolor="#8b7765">
139                <table border="0" cellspacing="0" cellpadding="2" width="100%">
140                  <tr>
141                    <td valign="top" width="200" bgcolor="#8b7765">
142                      <xsl:call-template name="toc"/>
143                    </td>
144                    <td valign="top" bgcolor="#8b7765">
145                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
146                        <tr>
147                          <td>
148                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
149                              <tr>
150                                <td>
151                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
152                                    <tr>
153                                      <td bgcolor="#fffacd">
154				        <xsl:apply-templates mode="reflist" select="file"/>
155					<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
156                                      </td>
157                                    </tr>
158                                  </table>
159                                </td>
160                              </tr>
161                            </table>
162                          </td>
163                        </tr>
164                      </table>
165                    </td>
166                  </tr>
167                </table>
168              </td>
169            </tr>
170          </table>
171        </body>
172      </html>
173    </xsl:document>
174  </xsl:template>
175  <xsl:template match="functions">
176    <xsl:message>Generating API Functions by Type</xsl:message>
177    <xsl:variable name="title">List of function manipulating types in <xsl:value-of select="$module"/></xsl:variable>
178    <xsl:document href="APIfunctions.html" method="html" version="4.01" encoding="ISO-8859-1">
179      <html>
180        <head>
181        <xsl:call-template name="style"/>
182	<xsl:element name="title">
183	  <xsl:value-of select="$title"/>
184	</xsl:element>
185        </head>
186        <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
187          <xsl:call-template name="titlebox">
188	    <xsl:with-param name="title" select="$title"/>
189	  </xsl:call-template>
190          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
191            <tr>
192              <td bgcolor="#8b7765">
193                <table border="0" cellspacing="0" cellpadding="2" width="100%">
194                  <tr>
195                    <td valign="top" width="200" bgcolor="#8b7765">
196                      <xsl:call-template name="toc"/>
197                    </td>
198                    <td valign="top" bgcolor="#8b7765">
199                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
200                        <tr>
201                          <td>
202                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
203                              <tr>
204                                <td>
205                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
206                                    <tr>
207                                      <td bgcolor="#fffacd">
208				        <xsl:apply-templates mode="reflist" select="type"/>
209					<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
210                                      </td>
211                                    </tr>
212                                  </table>
213                                </td>
214                              </tr>
215                            </table>
216                          </td>
217                        </tr>
218                      </table>
219                    </td>
220                  </tr>
221                </table>
222              </td>
223            </tr>
224          </table>
225        </body>
226      </html>
227    </xsl:document>
228  </xsl:template>
229  <xsl:template match="alpha">
230    <xsl:message>Generating API Alphabetic list</xsl:message>
231    <xsl:variable name="title">Alphabetic List of Symbols in <xsl:value-of select="$module"/></xsl:variable>
232    <xsl:document href="APIsymbols.html" method="html" version="4.01" encoding="ISO-8859-1">
233      <html>
234        <head>
235        <xsl:call-template name="style"/>
236	<xsl:element name="title">
237	  <xsl:value-of select="$title"/>
238	</xsl:element>
239        </head>
240        <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
241          <xsl:call-template name="titlebox">
242	    <xsl:with-param name="title" select="$title"/>
243	  </xsl:call-template>
244          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
245            <tr>
246              <td bgcolor="#8b7765">
247                <table border="0" cellspacing="0" cellpadding="2" width="100%">
248                  <tr>
249                    <td valign="top" width="200" bgcolor="#8b7765">
250                      <xsl:call-template name="toc"/>
251                    </td>
252                    <td valign="top" bgcolor="#8b7765">
253                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
254                        <tr>
255                          <td>
256                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
257                              <tr>
258                                <td>
259                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
260                                    <tr>
261                                      <td bgcolor="#fffacd">
262				        <xsl:apply-templates mode="reflist" select="letter"/>
263					<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
264                                      </td>
265                                    </tr>
266                                  </table>
267                                </td>
268                              </tr>
269                            </table>
270                          </td>
271                        </tr>
272                      </table>
273                    </td>
274                  </tr>
275                </table>
276              </td>
277            </tr>
278          </table>
279        </body>
280      </html>
281    </xsl:document>
282  </xsl:template>
283  <xsl:template name="apichunks">
284    <h2 align="center">
285    <xsl:for-each select="/apirefs/index/chunks/chunk">
286      <xsl:variable name="name" select="@name"/>
287      <xsl:variable name="start" select="@start"/>
288      <xsl:variable name="end" select="@end"/>
289      <xsl:variable name="block" select="concat($start, '-', $end)"/>
290      <a href="API{$name}.html"><xsl:value-of select="$block"/></a>
291      <xsl:text>
292</xsl:text>
293    </xsl:for-each>
294    </h2>
295  </xsl:template>
296  <xsl:template match="chunk">
297    <xsl:variable name="name" select="@name"/>
298    <xsl:variable name="start" select="@start"/>
299    <xsl:variable name="end" select="@end"/>
300    <xsl:variable name="block" select="concat($start, '-', $end)"/>
301    <xsl:variable name="target" select="/apirefs/index/chunk[@name = $name]"/>
302    <xsl:variable name="title">API Alphabetic Index <xsl:value-of select="$block"/> for <xsl:value-of select="$module"/></xsl:variable>
303    <xsl:document href="API{$name}.html" method="html" version="4.01" encoding="ISO-8859-1">
304      <html>
305        <head>
306        <xsl:call-template name="style"/>
307	<xsl:element name="title">
308	  <xsl:value-of select="$title"/>
309	</xsl:element>
310        </head>
311        <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
312          <xsl:call-template name="titlebox">
313	    <xsl:with-param name="title" select="$title"/>
314	  </xsl:call-template>
315          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
316            <tr>
317              <td bgcolor="#8b7765">
318                <table border="0" cellspacing="0" cellpadding="2" width="100%">
319                  <tr>
320                    <td valign="top" width="200" bgcolor="#8b7765">
321                      <xsl:call-template name="toc"/>
322                    </td>
323                    <td valign="top" bgcolor="#8b7765">
324                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
325                        <tr>
326                          <td>
327                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
328                              <tr>
329                                <td>
330                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
331                                    <tr>
332                                      <td bgcolor="#fffacd">
333				        <xsl:call-template name="apichunks"/>
334				        <xsl:apply-templates mode="wordlist"
335					           select="$target/letter"/>
336				        <xsl:call-template name="apichunks"/>
337					<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
338                                      </td>
339                                    </tr>
340                                  </table>
341                                </td>
342                              </tr>
343                            </table>
344                          </td>
345                        </tr>
346                      </table>
347                    </td>
348                  </tr>
349                </table>
350              </td>
351            </tr>
352          </table>
353        </body>
354      </html>
355    </xsl:document>
356  </xsl:template>
357
358  <xsl:template match="index">
359    <xsl:message>Generating API Index</xsl:message>
360    <xsl:apply-templates select="chunks/chunk"/>
361  </xsl:template>
362
363  <xsl:template match="apirefs">
364    <xsl:message>Generating API Cross References</xsl:message>
365    <xsl:apply-templates select="constructors"/>
366    <xsl:apply-templates select="functions"/>
367    <xsl:apply-templates select="alpha"/>
368    <xsl:apply-templates select="files"/>
369    <xsl:apply-templates select="index"/>
370  </xsl:template>
371
372  <xsl:template match="/">
373    <xsl:apply-templates select="$apirefs/apirefs"/>
374  </xsl:template>
375
376</xsl:stylesheet>
377