]> git.stg.codes - stg.git/blob - doc/xslt/website/head.xsl
Help book chapter 2 complete
[stg.git] / doc / xslt / website / head.xsl
1 <?xml version="1.0"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 version="1.0">
4
5 <xsl:template match="head" mode="head.mode">
6   <xsl:variable name="nodes" select="*"/>
7   <head>
8     <meta name="generator" content="Website XSL Stylesheet V{$VERSION}"/>
9     <xsl:if test="$html.stylesheet != ''">
10       <link rel="stylesheet" href="{$html.stylesheet}" type="text/css">
11         <xsl:if test="$html.stylesheet.type != ''">
12           <xsl:attribute name="type">
13             <xsl:value-of select="$html.stylesheet.type"/>
14           </xsl:attribute>
15         </xsl:if>
16       </link>
17     </xsl:if>
18
19     <xsl:variable name="thisid" select="ancestor-or-self::webpage/@id"/>
20     <xsl:variable name="thisrelpath">
21       <xsl:apply-templates select="$autolayout//*[@id=$thisid]" mode="toc-rel-path"/>
22     </xsl:variable>
23
24     <xsl:variable name="topid">
25       <xsl:call-template name="top.page"/>
26     </xsl:variable>
27
28     <xsl:if test="$topid != ''">
29       <link rel="home">
30         <xsl:attribute name="href">
31           <xsl:call-template name="page.uri">
32             <xsl:with-param name="page" select="$autolayout//*[@id=$topid]"/>
33             <xsl:with-param name="relpath" select="$thisrelpath"/>
34           </xsl:call-template>
35         </xsl:attribute>
36         <xsl:attribute name="title">
37           <xsl:value-of select="$autolayout//*[@id=$topid]/title"/>
38         </xsl:attribute>
39       </link>
40     </xsl:if>
41
42     <xsl:variable name="upid">
43       <xsl:call-template name="up.page"/>
44     </xsl:variable>
45
46     <xsl:if test="$upid != ''">
47       <link rel="up">
48         <xsl:attribute name="href">
49           <xsl:call-template name="page.uri">
50             <xsl:with-param name="page" select="$autolayout//*[@id=$upid]"/>
51             <xsl:with-param name="relpath" select="$thisrelpath"/>
52           </xsl:call-template>
53         </xsl:attribute>
54         <xsl:attribute name="title">
55           <xsl:value-of select="$autolayout//*[@id=$upid]/title"/>
56         </xsl:attribute>
57       </link>
58     </xsl:if>
59
60     <xsl:variable name="previd">
61       <xsl:call-template name="prev.page"/>
62     </xsl:variable>
63
64     <xsl:if test="$previd != ''">
65       <link rel="previous">
66         <xsl:attribute name="href">
67           <xsl:call-template name="page.uri">
68             <xsl:with-param name="page" select="$autolayout//*[@id=$previd]"/>
69             <xsl:with-param name="relpath" select="$thisrelpath"/>
70           </xsl:call-template>
71         </xsl:attribute>
72         <xsl:attribute name="title">
73           <xsl:value-of select="$autolayout//*[@id=$previd]/title"/>
74         </xsl:attribute>
75       </link>
76     </xsl:if>
77
78     <xsl:variable name="nextid">
79       <xsl:call-template name="next.page"/>
80     </xsl:variable>
81
82     <xsl:if test="$nextid != ''">
83       <link rel="next">
84         <xsl:attribute name="href">
85           <xsl:call-template name="page.uri">
86             <xsl:with-param name="page" select="$autolayout//*[@id=$nextid]"/>
87             <xsl:with-param name="relpath" select="$thisrelpath"/>
88           </xsl:call-template>
89         </xsl:attribute>
90         <xsl:attribute name="title">
91           <xsl:value-of select="$autolayout//*[@id=$nextid]/title"/>
92         </xsl:attribute>
93       </link>
94     </xsl:if>
95
96     <xsl:variable name="firstid">
97       <xsl:call-template name="first.page"/>
98     </xsl:variable>
99
100     <xsl:if test="$firstid != ''">
101       <link rel="first">
102         <xsl:attribute name="href">
103           <xsl:call-template name="page.uri">
104             <xsl:with-param name="page" select="$autolayout//*[@id=$firstid]"/>
105             <xsl:with-param name="relpath" select="$thisrelpath"/>
106           </xsl:call-template>
107         </xsl:attribute>
108         <xsl:attribute name="title">
109           <xsl:value-of select="$autolayout//*[@id=$firstid]/title"/>
110         </xsl:attribute>
111       </link>
112     </xsl:if>
113
114     <xsl:variable name="lastid">
115       <xsl:call-template name="last.page"/>
116     </xsl:variable>
117
118     <xsl:if test="$lastid != ''">
119       <link rel="last">
120         <xsl:attribute name="href">
121           <xsl:call-template name="page.uri">
122             <xsl:with-param name="page" select="$autolayout//*[@id=$lastid]"/>
123             <xsl:with-param name="relpath" select="$thisrelpath"/>
124           </xsl:call-template>
125         </xsl:attribute>
126         <xsl:attribute name="title">
127           <xsl:value-of select="$autolayout//*[@id=$lastid]/title"/>
128         </xsl:attribute>
129       </link>
130     </xsl:if>
131
132     <xsl:apply-templates select="$autolayout/autolayout/style
133                                  |$autolayout/autolayout/script
134                                  |$autolayout/autolayout/headlink"
135                          mode="head.mode">
136       <xsl:with-param name="webpage" select="ancestor::webpage"/>
137     </xsl:apply-templates>
138     <xsl:apply-templates mode="head.mode"/>
139     <xsl:call-template name="user.head.content">
140       <xsl:with-param name="node" select="ancestor::webpage"/>
141     </xsl:call-template>
142   </head>
143 </xsl:template>
144
145 <xsl:template match="title" mode="head.mode">
146   <title><xsl:value-of select="."/></title>
147 </xsl:template>
148
149 <xsl:template match="titleabbrev" mode="head.mode">
150   <!--nop-->
151 </xsl:template>
152
153 <xsl:template match="subtitle" mode="head.mode">
154   <!--nop-->
155 </xsl:template>
156
157 <xsl:template match="summary" mode="head.mode">
158   <!--nop-->
159 </xsl:template>
160
161 <xsl:template match="base" mode="head.mode">
162   <base href="{@href}">
163     <xsl:if test="@target">
164       <xsl:attribute name="target">
165         <xsl:value-of select="@target"/>
166       </xsl:attribute>
167     </xsl:if>
168   </base>
169 </xsl:template>
170
171 <xsl:template match="keywords" mode="head.mode">
172   <meta name="keyword" content="{.}"/>
173   <meta name="keywords" content="{.}"/>
174 </xsl:template>
175
176 <xsl:template match="copyright" mode="head.mode">
177   <!--nop-->
178 </xsl:template>
179
180 <xsl:template match="author" mode="head.mode">
181   <!--nop-->
182 </xsl:template>
183
184 <xsl:template match="edition" mode="head.mode">
185   <!--nop-->
186 </xsl:template>
187
188 <xsl:template match="meta" mode="head.mode">
189   <xsl:choose>
190     <xsl:when test="@http-equiv">
191       <meta http-equiv="{@http-equiv}" content="{@content}"/>
192     </xsl:when>
193     <xsl:otherwise>
194       <meta name="{@name}" content="{@content}"/>
195     </xsl:otherwise>
196   </xsl:choose>
197 </xsl:template>
198
199 <xsl:template match="script" mode="head.mode">
200   <script>
201     <xsl:choose>
202       <xsl:when test="@language">
203         <xsl:attribute name="language">
204           <xsl:value-of select="@language"/>
205         </xsl:attribute>
206       </xsl:when>
207       <xsl:otherwise>
208         <xsl:attribute name="language">JavaScript</xsl:attribute>
209       </xsl:otherwise>
210     </xsl:choose>
211     <xsl:choose>
212       <xsl:when test="@type">
213         <xsl:attribute name="type">
214           <xsl:value-of select="@type"/>
215         </xsl:attribute>
216       </xsl:when>
217       <xsl:otherwise>
218         <xsl:attribute name="type">text/javascript</xsl:attribute>
219       </xsl:otherwise>
220     </xsl:choose>
221     <xsl:apply-templates/>
222   </script>
223 </xsl:template>
224
225 <xsl:template match="script[@src]" mode="head.mode" priority="2">
226   <xsl:param name="webpage" select="ancestor::webpage"/>
227   <xsl:variable name="relpath">
228     <xsl:call-template name="root-rel-path">
229       <xsl:with-param name="webpage" select="$webpage"/>
230     </xsl:call-template>
231   </xsl:variable>
232
233   <xsl:variable name="language">
234     <xsl:choose>
235       <xsl:when test="@language">
236         <xsl:value-of select="@language"/>
237       </xsl:when>
238       <xsl:otherwise>JavaScript</xsl:otherwise>
239     </xsl:choose>
240   </xsl:variable>
241
242   <xsl:variable name="type">
243     <xsl:choose>
244       <xsl:when test="@type">
245         <xsl:value-of select="@type"/>
246       </xsl:when>
247       <xsl:otherwise>text/javascript</xsl:otherwise>
248     </xsl:choose>
249   </xsl:variable>
250
251   <script src="{$relpath}{@src}" language="{$language}" type="{$type}"/>
252 </xsl:template>
253
254 <xsl:template match="style" mode="head.mode">
255   <style>
256     <xsl:if test="@type">
257       <xsl:attribute name="type">
258         <xsl:value-of select="@type"/>
259       </xsl:attribute>
260     </xsl:if>
261
262     <xsl:apply-templates/>
263
264   </style>
265 </xsl:template>
266
267 <xsl:template match="style[@src]" mode="head.mode" priority="2">
268   <xsl:param name="webpage" select="ancestor::webpage"/>
269   <xsl:variable name="relpath">
270     <xsl:call-template name="root-rel-path">
271       <xsl:with-param name="webpage" select="$webpage"/>
272     </xsl:call-template>
273   </xsl:variable>
274
275   <xsl:choose>
276     <xsl:when test="starts-with(@src, '/')">
277       <link rel="stylesheet" href="{@src}">
278         <xsl:if test="@type">
279           <xsl:attribute name="type">
280             <xsl:value-of select="@type"/>
281           </xsl:attribute>
282         </xsl:if>
283       </link>
284     </xsl:when>
285     <xsl:otherwise>
286       <link rel="stylesheet" href="{$relpath}{@src}">
287         <xsl:if test="@type">
288           <xsl:attribute name="type">
289             <xsl:value-of select="@type"/>
290           </xsl:attribute>
291         </xsl:if>
292       </link>
293     </xsl:otherwise>
294   </xsl:choose>
295 </xsl:template>
296
297 <xsl:template match="headlink" mode="head.mode">
298   <link>
299     <xsl:copy-of select="@*"/>
300   </link>
301 </xsl:template>
302
303 <xsl:template match="abstract" mode="head.mode">
304   <!--nop-->
305 </xsl:template>
306
307 <xsl:template match="revhistory" mode="head.mode">
308   <!--nop-->
309 </xsl:template>
310
311 <xsl:template match="rddl:*" mode="head.mode"
312               xmlns:rddl='http://www.rddl.org/'>
313   <!--nop-->
314 </xsl:template>
315
316 </xsl:stylesheet>