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