source: trunk/third/libxslt/doc/site.xsl @ 21535

Revision 21535, 16.4 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21534, which included commits to RCS files with non-trunk default branches.
Line 
1<?xml version="1.0"?>
2<!--
3  This stylesheet is imported by the other stylesheets (e.g. newapi.xsl
4  and api.xsl).  For flexibility, it depends upon a global param
5  which is normally defined in the importing stylesheet.  This is:
6   href_base    The most superior documentation directory (e.g. XML/)
7-->
8<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
9  <xsl:output method="xml" encoding="ISO-8859-1"
10      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
11      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
12
13  <!-- dirname is used to 'choose' between libxslt and libexslt -->
14  <xsl:param name="dirname" select="''"/>
15  <!-- libname is the name of the library being documented -->
16  <xsl:param name="libname" select="'libxslt'"/>
17  <!-- logo_base points to the *.png logos used in headers -->
18  <xsl:param name="logo_base" select="''"/>
19
20  <!-- href_base gives the location of 'base documentation' files
21       and can be changed by importing stylesheets -->
22  <xsl:variable name="href_base" select="''"/>
23
24  <xsl:variable name="home_base">
25    <xsl:choose>
26      <xsl:when test="$dirname != ''">
27        <xsl:value-of select = "'../'"/>
28      </xsl:when>
29      <xsl:otherwise>
30        <xsl:value-of select = "''"/>
31      </xsl:otherwise>
32    </xsl:choose>
33  </xsl:variable>
34
35  <xsl:variable name="menu_name" select="'Main Menu'"/>
36
37<!--
38 - returns the filename associated to an ID in the original file
39 -->
40  <xsl:template name="filename">
41    <xsl:param name="name" select="string(@href)"/>
42    <xsl:choose>
43      <xsl:when test="$name = '#Introducti'">
44        <xsl:text>intro.html</xsl:text>
45      </xsl:when>
46      <xsl:when test="$name = '#Documentat'">
47        <xsl:text>docs.html</xsl:text>
48      </xsl:when>
49      <xsl:when test="$name = '#Reporting'">
50        <xsl:text>bugs.html</xsl:text>
51      </xsl:when>
52      <xsl:when test="$name = '#help'">
53        <xsl:text>help.html</xsl:text>
54      </xsl:when>
55      <xsl:when test="$name = '#Help'">
56        <xsl:text>help.html</xsl:text>
57      </xsl:when>
58      <xsl:when test="$name = '#Downloads'">
59        <xsl:text>downloads.html</xsl:text>
60      </xsl:when>
61      <xsl:when test="$name = '#News'">
62        <xsl:text>news.html</xsl:text>
63      </xsl:when>
64      <xsl:when test="$name = '#Contributi'">
65        <xsl:text>contribs.html</xsl:text>
66      </xsl:when>
67      <xsl:when test="$name = '#xsltproc'">
68        <xsl:text>xsltproc2.html</xsl:text>
69      </xsl:when>
70      <xsl:when test="$name = '#API'">
71        <xsl:text>API.html</xsl:text>
72      </xsl:when>
73      <xsl:when test="$name = '#Extensions'">
74        <xsl:text>extensions.html</xsl:text>
75      </xsl:when>
76      <xsl:when test="$name = '#Internals'">
77        <xsl:text>internals.html</xsl:text>
78      </xsl:when>
79      <xsl:when test="$name = '#DocBook'">
80        <xsl:text>docbook.html</xsl:text>
81      </xsl:when>
82      <xsl:when test="$name = '#FAQ'">
83        <xsl:text>FAQ.html</xsl:text>
84      </xsl:when>
85      <xsl:when test="$name = '#Python'">
86        <xsl:text>python.html</xsl:text>
87      </xsl:when>
88      <xsl:when test="$name = ''">
89        <xsl:text>unknown.html</xsl:text>
90      </xsl:when>
91      <xsl:otherwise>
92        <xsl:value-of select="$name"/>
93      </xsl:otherwise>
94    </xsl:choose>
95  </xsl:template>
96
97<!--
98 - The table of content
99 -->
100  <xsl:variable name="toc">
101    <form action="{$home_base}search.php"
102          enctype="application/x-www-form-urlencoded" method="get">
103      <input name="query" type="text" size="20" value=""/>
104      <input name="submit" type="submit" value="Search ..."/>
105    </form>
106    <ul>
107      <li><a href="index.html">Home</a></li>
108      <xsl:for-each select="/html/body/h2">
109        <xsl:variable name="filename">
110          <xsl:call-template name="filename">
111            <xsl:with-param name="name" select="concat('#', string(a[1]/@name))"/>
112          </xsl:call-template>
113        </xsl:variable>
114        <li>
115          <xsl:element name="a">
116            <xsl:attribute name="href">
117              <xsl:value-of select="$filename"/>
118            </xsl:attribute>
119            <xsl:value-of select="."/>
120          </xsl:element>
121        </li>
122      </xsl:for-each>
123
124      <xsl:choose>
125        <xsl:when test="$dirname != ''">
126          <li><a href="../index.html" style="font-weight:bold">libxslt</a></li>
127        </xsl:when>
128        <xsl:otherwise>
129          <li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li>
130          <li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li>
131        </xsl:otherwise>
132      </xsl:choose>
133
134      <li><a href="html/index.html" style="font-weight:bold">API Menu</a></li>
135      <li><a href="ChangeLog.html">ChangeLog</a></li>
136    </ul>
137  </xsl:variable>
138
139  <xsl:variable name="api">
140    <ul>
141      <li><a href="{$href_base}APIchunk0.html">Alphabetic</a></li>
142      <li><a href="{$href_base}APIconstructors.html">Constructors</a></li>
143      <li><a href="{$href_base}APIfunctions.html">Functions/Types</a></li>
144      <li><a href="{$href_base}APIfiles.html">Modules</a></li>
145      <li><a href="{$href_base}APIsymbols.html">Symbols</a></li>
146    </ul>
147  </xsl:variable>
148
149  <xsl:variable name="related">
150    <ul>
151      <xsl:choose>
152        <xsl:when test="$dirname = ''">
153      <li><a href="{$href_base}tutorial/libxslttutorial.html">Tutorial</a>,
154          <a href="{$href_base}tutorial2/libxslt_pipes.html">Tutorial2</a></li>
155      <li><a href="{$href_base}xsltproc.html">Man page for xsltproc</a></li>
156        </xsl:when>
157      </xsl:choose>
158      <li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li>
159      <li><a href="http://xmlsoft.org/">XML libxml2</a></li>
160      <li><a href="ftp://xmlsoft.org/">FTP</a></li>
161      <li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li>
162      <li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
163      <li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li>
164      <li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li>
165      <li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li>
166      <li><a href="http://www.mod-xslt2.com/">Apache module</a></li>
167      <li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li>
168      <li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li>
169    </ul>
170  </xsl:variable>
171
172  <xsl:template name="develtoc">
173    <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
174      <tr>
175        <td>
176          <table width="100%" border="0" cellspacing="1" cellpadding="3">
177            <tr>
178              <td colspan="1" bgcolor="#eecfa1" align="center">
179                <center>
180                  <b><xsl:value-of select="$menu_name"/></b>
181                </center>
182              </td>
183            </tr>
184            <tr>
185              <td bgcolor="#fffacd">
186                <xsl:copy-of select="$toc"/>
187              </td>
188            </tr>
189          </table>
190          <table width="100%" border="0" cellspacing="1" cellpadding="3">
191            <tr>
192              <td colspan="1" bgcolor="#eecfa1" align="center">
193                <center>
194                  <b>Related links</b>
195                </center>
196              </td>
197            </tr>
198            <tr>
199              <td bgcolor="#fffacd">
200                <xsl:copy-of select="$related"/>
201              </td>
202            </tr>
203          </table>
204          <table width="100%" border="0" cellspacing="1" cellpadding="3">
205            <tr>
206              <td colspan="1" bgcolor="#eecfa1" align="center">
207                <center>
208                  <b>API Indexes</b>
209                </center>
210              </td>
211            </tr>
212            <tr>
213              <td bgcolor="#fffacd">
214                <xsl:copy-of select="$api"/>
215              </td>
216            </tr>
217          </table>
218        </td>
219      </tr>
220    </table>
221  </xsl:template>
222
223  <xsl:template mode="head" match="title">
224    <title>
225      <xsl:apply-templates/>
226    </title>
227  </xsl:template>
228  <xsl:template mode="head" match="meta">
229</xsl:template>
230
231<!--
232 - The global title
233 -->
234  <xsl:variable name="globaltitle" select="string(/html/body/h1[1])"/>
235<!--
236 - Write the styles in the head
237 -->
238  <xsl:template name="style">
239    <style type="text/css">
240TD {font-family: Verdana,Arial,Helvetica}
241BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
242H1 {font-family: Verdana,Arial,Helvetica}
243H2 {font-family: Verdana,Arial,Helvetica}
244H3 {font-family: Verdana,Arial,Helvetica}
245A:link, A:visited, A:active { text-decoration: underline }
246    </style>
247  </xsl:template>
248
249<!--
250 - Write the title box on top
251 -->
252  <xsl:template name="titlebox">
253    <xsl:param name="title" select="'Main Page'"/>
254    <table border="0" width="100%" cellpadding="5" cellspacing="0" align="center">
255      <tr>
256        <td width="120">
257          <a href="http://swpat.ffii.org/"><img src="{$logo_base}epatents.png" alt="Action against software patents"/></a>
258        </td>
259        <td width="180">
260          <a href="http://www.gnome.org/"><img src="{$logo_base}gnome2.png" alt="Gnome2 Logo"/></a>
261          <a href="http://www.w3.org/Status"><img src="{$logo_base}w3c.png" alt="W3C logo"/></a>
262          <a href="http://www.redhat.com"><img src="{$logo_base}redhat.gif" alt="Red Hat Logo"/></a>
263          <div align="left">
264            <a href="http://xmlsoft.org/XSLT/"><img src="{$logo_base}Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo"/></a>
265          </div>
266        </td>
267        <td>
268          <table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000">
269            <tr>
270              <td>
271                <table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd">
272                  <tr>
273                    <td align="center">
274                      <xsl:element name="h1">
275                        <xsl:value-of select="$globaltitle"/>
276                      </xsl:element>
277                      <xsl:element name="h2">
278                        <xsl:value-of select="$title"/>
279                      </xsl:element>
280                    </td>
281                  </tr>
282                </table>
283              </td>
284            </tr>
285          </table>
286        </td>
287      </tr>
288    </table>
289  </xsl:template>
290
291<!--
292 - Handling of nodes in the body before the first H2, table of content
293 - Everything is just copied over, except href which may get rewritten
294 - and h1/h2/a at the top level
295 -->
296  <xsl:template priority="2" mode="subcontent" match="a">
297    <xsl:variable name="filename">
298      <xsl:call-template name="filename">
299        <xsl:with-param name="name" select="string(@href)"/>
300      </xsl:call-template>
301    </xsl:variable>
302    <xsl:copy>
303      <xsl:attribute name="href">
304        <xsl:value-of select="$filename"/>
305      </xsl:attribute>
306      <xsl:apply-templates mode="subcontent" select="node()"/>
307    </xsl:copy>
308  </xsl:template>
309
310  <xsl:template mode="subcontent" match="@*|node()">
311    <xsl:copy>
312      <xsl:apply-templates mode="subcontent" select="@*|node()"/>
313    </xsl:copy>
314  </xsl:template>
315  <xsl:template mode="content" match="@*|node()">
316    <xsl:if test="name() != 'h1' and name() != 'h2'">
317      <xsl:copy>
318        <xsl:apply-templates mode="subcontent" select="@*|node()"/>
319      </xsl:copy>
320    </xsl:if>
321  </xsl:template>
322
323<!--
324 - Handling of nodes in the body after an H2
325 - Open a new file and dump all the siblings up to the next H2
326 -->
327  <xsl:template name="subfile">
328    <xsl:param name="header" select="following-sibling::h2[1]"/>
329    <xsl:variable name="filename">
330      <xsl:call-template name="filename">
331        <xsl:with-param name="name" select="concat('#', string($header/a[1]/@name))"/>
332      </xsl:call-template>
333    </xsl:variable>
334    <xsl:variable name="title">
335      <xsl:value-of select="$header"/>
336    </xsl:variable>
337    <xsl:variable name="content">
338      <xsl:apply-templates mode="subfile" select=
339         "$header/following-sibling::*[preceding-sibling::h2[1] = $header and name() != 'h2' and position() != last()]"/>
340    </xsl:variable>
341    <xsl:call-template name="new_page">
342      <xsl:with-param name="filename" select="concat($dirname, $filename)"/>
343      <xsl:with-param name="title" select="$title"/>
344      <xsl:with-param name="target" select="$content"/>
345    </xsl:call-template>
346  </xsl:template>
347
348  <xsl:template mode="subfile" match="@*|node()">
349    <xsl:copy>
350      <xsl:apply-templates mode="content" select="@*|node()"/>
351    </xsl:copy>
352  </xsl:template>
353
354<!--
355 - Handling of the initial body and head HTML document
356 -->
357  <xsl:template match="body">
358    <xsl:variable name="firsth2" select="./h2[1]"/>
359    <xsl:variable name="rest2" select="./h2[position()&gt;1]"/>
360    <xsl:variable name="content">
361      <xsl:apply-templates mode="content" select="($firsth2/preceding-sibling::*)"/>
362      <xsl:for-each select="./h2">
363        <xsl:call-template name="subfile">
364          <xsl:with-param name="header" select="."/>
365        </xsl:call-template>
366      </xsl:for-each>
367    </xsl:variable>
368    <xsl:call-template name="generic_page">
369      <xsl:with-param name="title" select="$libname"/>
370      <xsl:with-param name="target" select="$content"/>
371    </xsl:call-template>
372
373  </xsl:template>
374
375  <xsl:template match="head">
376  <!--
377    The output <head> node is created during initial processing
378  -->
379  </xsl:template>
380
381  <xsl:template match="html">
382  <!--
383    The output <html> node is created during initial processing
384  -->
385    <xsl:apply-templates/>
386  </xsl:template>
387
388<!--
389  new_page creates a new output document using the parameter "filename", then calls upon
390  the template generic_page to do the actual page generation.
391-->
392  <xsl:template name="new_page">
393    <xsl:param name="filename"/>  <!-- Output filename -->
394    <xsl:param name="title"/>     <!-- Page title -->
395    <xsl:param name="target"/>    <!-- The nodes (RTF) to be copied into document -->
396    <xsl:document href="{$filename}" method="xml" encoding="ISO-8859-1"
397          doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
398          doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
399      <xsl:call-template name="generic_page">
400        <xsl:with-param name="title" select="$title"/>
401        <xsl:with-param name="target" select="$target"/>
402          <xsl:with-param name="toc" select="$toc"/>
403      </xsl:call-template>
404    </xsl:document>
405  </xsl:template>
406
407<!--
408  generic_page produces the "standard" page used by all the different doc files.
409-->
410  <xsl:template name="generic_page">
411    <xsl:param name="title"/>
412    <xsl:param name="target"/>    <!-- The nodes (RTF) that make up the main page content -->
413      <html>
414        <head>
415        <xsl:call-template name="style"/>
416        <xsl:element name="title">
417          <xsl:value-of select="$title"/>
418        </xsl:element>
419        </head>
420        <body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
421          <xsl:call-template name="titlebox">
422            <xsl:with-param name="title" select="$title"/>
423          </xsl:call-template>
424          <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
425            <tr>
426              <td bgcolor="#8b7765">
427                <table border="0" cellspacing="0" cellpadding="2" width="100%">
428                  <tr>
429                    <td valign="top" width="200" bgcolor="#8b7765">
430                      <xsl:call-template name="develtoc"/>
431                    </td>
432                    <td valign="top" bgcolor="#8b7765">
433                      <table border="0" cellspacing="0" cellpadding="1" width="100%">
434                        <tr>
435                          <td>
436                            <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
437                              <tr>
438                                <td>
439                                  <table border="0" cellpadding="3" cellspacing="1" width="100%">
440                                    <tr>
441                                      <td bgcolor="#fffacd">
442                                        <xsl:copy-of select="$target"/>
443                                        <p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
444                                      </td>
445                                    </tr>
446                                  </table>
447                                </td>
448                              </tr>
449                            </table>
450                          </td>
451                        </tr>
452                      </table>
453                    </td>
454                  </tr>
455                </table>
456              </td>
457            </tr>
458          </table>
459        </body>
460      </html>
461  </xsl:template>
462</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.