Stylescript fixes
[Samba.git] / docs / xslt / expand-sambadoc.xsl
blobca57e7fec80a3b74104c7ebdb79817e9ee9f27e2
1 <?xml version='1.0'?>
2 <!--
3 Samba-documentation specific stylesheets
4 Published under the GNU GPL
6 (C) Jelmer Vernooij 2002-2004
7 (C) Alexander Bokovoy 2002-2004
8 -->
9 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10 xmlns:exsl="http://exslt.org/common"
11 xmlns:samba="http://samba.org/common"
12 version="1.1"
13 extension-element-prefixes="exsl">
15 <xsl:import href="../settings.xsl"/>
17 <xsl:output method="xml" encoding="UTF-8" doctype-public="-//OASIS//DTD DocBook XML V4.2//EN" indent="yes" doctype-system="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"/>
19 <xsl:param name="xmlSambaNsUri" select="'http://samba.org/common'"/>
21 <xsl:template match="reference/refentry/refsect1">
22 <xsl:if test="title!='VERSION' and title!='AUTHOR'">
23 <xsl:element name="refsect1">
24 <xsl:if test="@id!=''">
25 <xsl:attribute name="id">
26 <xsl:value-of select="@id"/>
27 </xsl:attribute>
28 </xsl:if>
29 <xsl:apply-templates/>
30 </xsl:element>
31 </xsl:if>
32 </xsl:template>
34 <xsl:template match="translator">
35 <xsl:element name="othercredit">
36 <xsl:element name="author">
37 <xsl:apply-templates/>
38 <xsl:element name="contrib">
39 <xsl:text>Translation to </xsl:text><xsl:value-of select="@lang"/>
40 </xsl:element>
41 </xsl:element>
42 </xsl:element>
43 </xsl:template>
45 <xsl:template match="reference/refentry">
46 <xsl:element name="section">
47 <xsl:attribute name="id">
48 <xsl:value-of select="@id"/>
49 </xsl:attribute>
50 <xsl:element name="title">
51 <xsl:value-of select="refmeta/refentrytitle"/>
52 <!-- <xsl:text> (</xsl:text>
53 <xsl:value-of select="refnamediv/refpurpose"/>
54 <xsl:text>)</xsl:text>-->
55 </xsl:element>
56 <xsl:apply-templates/>
57 </xsl:element>
58 </xsl:template>
60 <xsl:template match="reference/refentry/refmeta"/>
62 <xsl:template match="reference/refentry/refnamediv"/>
64 <xsl:template match="reference">
65 <xsl:element name="appendix">
66 <xsl:attribute name="id">
67 <xsl:value-of select="@id"/>
68 </xsl:attribute>
69 <xsl:apply-templates/>
70 </xsl:element>
71 </xsl:template>
74 <!-- This is needed to copy content unchanged -->
75 <xsl:template match="@*|node()">
76 <xsl:copy>
77 <xsl:apply-templates select="@*|node()"/>
78 </xsl:copy>
79 </xsl:template>
81 <xsl:template match="smbconfexample/smbconfoption|smbconfblock/smbconfoption">
83 <xsl:element name="member">
84 <xsl:element name="indexterm">
85 <xsl:element name="primary">
86 <xsl:value-of select="name"/>
87 </xsl:element>
88 </xsl:element>
89 <xsl:element name="parameter">
90 <xsl:text disable-output-escaping="yes">
91 &lt;?latex \hspace{1cm} ?&gt;
92 </xsl:text>
93 <xsl:value-of select="name"/>
94 <xsl:choose>
95 <xsl:when test="value != ''">
96 <xsl:text> = </xsl:text>
97 <xsl:value-of select="value"/>
98 </xsl:when>
99 </xsl:choose>
100 </xsl:element>
101 </xsl:element>
102 </xsl:template>
104 <xsl:template match="smbconfexample/smbconfcomment|smbconfblock/smbconfcomment">
105 <xsl:text disable-output-escaping="yes">
106 &lt;?latex \hspace{1cm} ?&gt;
107 </xsl:text>
108 <xsl:element name="member">
109 <xsl:text># </xsl:text>
110 <xsl:apply-templates/>
111 </xsl:element>
112 </xsl:template>
114 <xsl:template match="smbconfexample/smbconfsection|smbconfblock/smbconfsection">
115 <xsl:element name="member">
116 <xsl:text> </xsl:text>
117 </xsl:element>
118 <xsl:element name="member">
119 <xsl:element name="parameter">
120 <xsl:apply-templates/>
121 </xsl:element>
122 </xsl:element>
123 </xsl:template>
125 <xsl:template match="smbconfoption">
126 <!-- Include an index term -->
127 <xsl:element name="indexterm">
128 <xsl:element name="primary">
129 <xsl:value-of select="name"/>
130 </xsl:element>
131 </xsl:element>
133 <xsl:variable name="linkcontent">
134 <xsl:element name="parameter">
135 <xsl:attribute name="moreinfo">
136 <xsl:text>none</xsl:text>
137 </xsl:attribute>
138 <xsl:value-of select="name"/>
139 </xsl:element>
141 <xsl:choose>
142 <xsl:when test="value != ''">
143 <xsl:text> = </xsl:text>
144 <xsl:value-of select="value"/>
145 </xsl:when>
146 </xsl:choose>
147 </xsl:variable>
149 <xsl:choose>
150 <xsl:when test="$noreference = 1">
151 <xsl:value-of select="$linkcontent"/>
152 </xsl:when>
153 <xsl:otherwise>
154 <xsl:element name="link">
155 <xsl:attribute name="linkend">
156 <xsl:value-of select="translate(translate(string(name),' ',''),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
157 </xsl:attribute>
158 <xsl:value-of select="$linkcontent"/>
159 </xsl:element>
160 </xsl:otherwise>
161 </xsl:choose>
162 </xsl:template>
164 <!-- FIXME: Needs extension sometime -->
165 <xsl:template match="ntgroup|ntuser">
166 <xsl:element name="emphasis">
167 <xsl:apply-templates/>
168 </xsl:element>
169 </xsl:template>
171 <xsl:template match="smbconfexample">
172 <xsl:choose>
173 <xsl:when test="title = ''">
174 <xsl:message>
175 <xsl:text>Warning: smbconfexample does not have title!</xsl:text>
176 </xsl:message>
177 </xsl:when>
178 </xsl:choose>
179 <xsl:element name="example">
180 <xsl:choose>
181 <xsl:when test="@id != ''">
182 <xsl:attribute name="id">
183 <xsl:value-of select="@id"/>
184 </xsl:attribute>
185 </xsl:when>
186 </xsl:choose>
188 <xsl:element name="title">
189 <xsl:value-of select="title"/>
190 </xsl:element>
191 <xsl:element name="simplelist">
192 <xsl:apply-templates/>
193 </xsl:element>
194 </xsl:element>
195 </xsl:template>
197 <xsl:template match="smbconfexample/title">
198 </xsl:template>
200 <xsl:template match="smbconfblock">
201 <xsl:element name="simplelist">
202 <xsl:apply-templates/>
203 </xsl:element>
204 </xsl:template>
206 <xsl:template match="smbconfsection">
207 <xsl:element name="parameter">
208 <xsl:apply-templates/>
209 </xsl:element>
210 </xsl:template>
212 <xsl:template match="smbconfcomment">
213 <xsl:text># </xsl:text>
214 <xsl:apply-templates/>
215 </xsl:template>
217 <xsl:template match="smbfile">
218 <xsl:apply-templates/>
219 </xsl:template>
221 <xsl:template match="image">
222 <xsl:element name="figure">
223 <xsl:attribute name="id">
224 <xsl:choose>
225 <xsl:when test="@id != ''">
226 <xsl:value-of select="@id"/>
227 </xsl:when>
228 <xsl:otherwise>
229 <xsl:value-of select="imagefile"/>
230 </xsl:otherwise>
231 </xsl:choose>
232 </xsl:attribute>
234 <xsl:element name="title">
235 <xsl:if test="imagedescription = ''">
236 <xsl:message><xsl:text>imagedescription of image with id </xsl:text><xsl:value-of select="@id"/><xsl:text> is empty.</xsl:text></xsl:message>
237 </xsl:if>
238 <xsl:value-of select="imagedescription"/>
239 </xsl:element>
240 <xsl:element name="mediaobject">
241 <xsl:element name="imageobject">
242 <xsl:attribute name="role"><xsl:text>latex</xsl:text></xsl:attribute>
243 <xsl:element name="imagedata">
244 <xsl:attribute name="fileref">
245 <xsl:value-of select="$latex.imagebasedir"/><xsl:text>images/</xsl:text><xsl:value-of select="imagefile"/></xsl:attribute>
246 <xsl:attribute name="scale">
247 <xsl:choose>
248 <xsl:when test="@scale != ''">
249 <xsl:value-of select="@scale"/>
250 </xsl:when>
252 <xsl:otherwise>
253 <xsl:text>50</xsl:text>
254 </xsl:otherwise>
255 </xsl:choose>
256 </xsl:attribute>
257 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
258 </xsl:element>
259 </xsl:element>
260 <xsl:element name="imageobject">
261 <xsl:attribute name="role"><xsl:text>html</xsl:text></xsl:attribute>
262 <xsl:element name="imagedata">
263 <xsl:attribute name="fileref">
264 <xsl:text>images/</xsl:text><xsl:value-of select="imagefile"/><xsl:text>.png</xsl:text></xsl:attribute>
265 <xsl:attribute name="scale"><xsl:text>50</xsl:text></xsl:attribute>
266 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
267 </xsl:element>
268 </xsl:element>
269 <xsl:element name="imageobject">
270 <xsl:element name="imagedata">
271 <xsl:attribute name="fileref">
272 <xsl:text>images/</xsl:text><xsl:value-of select="imagefile"/><xsl:text>.png</xsl:text></xsl:attribute>
273 <xsl:attribute name="scale"><xsl:text>50</xsl:text></xsl:attribute>
274 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
275 </xsl:element>
276 </xsl:element>
278 </xsl:element>
279 </xsl:element>
280 </xsl:template>
282 <xsl:template match="description"><xsl:apply-templates/></xsl:template>
284 <xsl:template match="value"><xsl:apply-templates/></xsl:template>
286 <xsl:template match="synonym"><xsl:apply-templates/></xsl:template>
288 <xsl:template match="related"><xsl:apply-templates/></xsl:template>
290 <xsl:template match="filterline">
291 <xsl:element name="programlisting">
292 <xsl:apply-templates/>
293 </xsl:element>
294 </xsl:template>
296 <xsl:template match="//samba:parameterlist">
297 <xsl:apply-templates>
298 <xsl:sort select="varlistentry/term/anchor"/>
299 </xsl:apply-templates>
300 </xsl:template>
302 <xsl:template match="value/comment">
303 <xsl:text>&#10;# </xsl:text>
304 <xsl:apply-templates/>
305 </xsl:template>
307 <xsl:template match="//samba:parameter">
308 <!-- reconstruct varlistentry - not all of them will go into separate files
309 and also we must repair the main varlistentry itself.
311 <xsl:variable name="cname"><xsl:value-of select="translate(translate(string(@name),' ',''),
312 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
313 </xsl:variable>
315 <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
317 <xsl:variable name="anchor">
318 <xsl:element name="anchor">
319 <xsl:attribute name="id">
320 <xsl:value-of select="$cname"/>
321 </xsl:attribute>
322 </xsl:element>
323 </xsl:variable>
325 <xsl:variable name="context">
326 <xsl:text> (</xsl:text>
327 <xsl:value-of select="@context"/>
328 <xsl:text>)</xsl:text>
329 </xsl:variable>
331 <xsl:variable name="term">
332 <xsl:element name="term">
333 <xsl:copy-of select="$anchor"/>
334 <xsl:value-of select="@name"/>
335 <xsl:value-of select="$context"/>
336 </xsl:element>
337 </xsl:variable>
340 <!-- Generate list of examples -->
341 <xsl:variable name="examples">
342 <xsl:for-each select="value">
343 <xsl:if test="@type = 'example'">
344 <xsl:element name="para">
345 <xsl:text>Example: </xsl:text>
346 <xsl:element name="emphasis">
347 <xsl:element name="parameter">
348 <xsl:copy-of select="$name"/>
349 </xsl:element>
350 <xsl:text> = </xsl:text>
351 <xsl:apply-templates select="."/>
352 <xsl:text>&#10;</xsl:text>
353 </xsl:element>
354 <xsl:text>&#10;</xsl:text>
355 </xsl:element>
356 </xsl:if>
357 </xsl:for-each>
358 </xsl:variable>
360 <xsl:variable name="tdefault">
361 <xsl:for-each select="value">
362 <xsl:if test="@type = 'default'">
363 <xsl:element name="para">
364 <xsl:text>Default: </xsl:text>
365 <xsl:element name="emphasis">
366 <xsl:element name="parameter">
367 <xsl:copy-of select="$name"/>
368 </xsl:element>
369 <xsl:text> = </xsl:text>
370 <xsl:apply-templates select="."/>
371 <xsl:text>&#10;</xsl:text>
372 </xsl:element>
373 <xsl:text>&#10;</xsl:text>
374 </xsl:element>
375 </xsl:if>
376 </xsl:for-each>
377 </xsl:variable>
379 <xsl:variable name="default">
380 <xsl:choose>
381 <xsl:when test="$tdefault = ''">
382 <xsl:element name="para">
383 <xsl:element name="emphasis">
384 <xsl:text>No default</xsl:text>
385 </xsl:element>
386 </xsl:element>
387 </xsl:when>
388 <xsl:otherwise>
389 <xsl:copy-of select="$tdefault"/>
390 </xsl:otherwise>
391 </xsl:choose>
392 </xsl:variable>
394 <xsl:variable name="content">
395 <xsl:apply-templates select="description"/>
396 </xsl:variable>
398 <xsl:for-each select="synonym">
399 <xsl:element name="varlistentry">
400 <xsl:text>&#10;</xsl:text>
401 <xsl:element name="indexterm">
402 <xsl:attribute name="significance">
403 <xsl:text>preferred</xsl:text>
404 </xsl:attribute>
405 <xsl:element name="primary">
406 <xsl:value-of select="."/>
407 </xsl:element>
408 <xsl:element name="see">
409 <xsl:value-of select="$name"/>
410 </xsl:element>
411 </xsl:element>
413 <xsl:element name="term">
414 <xsl:element name="anchor">
415 <xsl:attribute name="id">
416 <xsl:value-of select="translate(translate(string(.),' ',''), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
417 </xsl:attribute>
418 </xsl:element>
419 <xsl:value-of select="."/>
420 </xsl:element>
422 <xsl:element name="listitem">
423 <xsl:element name="para"><xsl:text>This parameter is a synonym for </xsl:text><xsl:copy-of select="$name"/><xsl:text>.</xsl:text></xsl:element>
424 </xsl:element>
425 </xsl:element>
426 </xsl:for-each>
428 <xsl:element name="varlistentry">
429 <xsl:text>&#10;</xsl:text>
430 <xsl:element name="indexterm">
431 <xsl:attribute name="significance">
432 <xsl:text>preferred</xsl:text>
433 </xsl:attribute>
434 <xsl:element name="primary">
435 <xsl:value-of select="@name"/>
436 </xsl:element>
437 </xsl:element>
438 <xsl:copy-of select="$term"/>
439 <xsl:element name="listitem">
440 <xsl:copy-of select="$content"/> <xsl:text>&#10;</xsl:text>
441 <xsl:copy-of select="$default"/> <xsl:text>&#10;</xsl:text>
442 <xsl:copy-of select="$examples"/> <xsl:text>&#10;</xsl:text>
443 </xsl:element>
444 </xsl:element>
445 </xsl:template>
447 <xsl:template match="ulink">
448 <xsl:element name="ulink">
449 <xsl:attribute name="url">
450 <xsl:value-of select="@url"/>
451 </xsl:attribute>
453 <xsl:apply-templates/>
454 <xsl:if test="contains(@url,'http://') or contains(@url,'ftp://')">
455 <xsl:if test="$duplicate_ulinks='brackets'">
456 <xsl:text> (</xsl:text>
457 <xsl:value-of select="@url"/>
458 <xsl:text>)</xsl:text>
459 </xsl:if>
460 <xsl:if test="$duplicate_ulinks='footnote'">
461 <xsl:element name="footnote">
462 <xsl:element name="para">
463 <xsl:value-of select="@url"/>
464 </xsl:element>
465 </xsl:element>
466 </xsl:if>
467 </xsl:if>
468 </xsl:element>
469 </xsl:template>
471 <!-- Just ignore these -->
472 <xsl:template match="smbfile">
473 <xsl:apply-templates/>
474 </xsl:template>
476 <xsl:template match="quote">
477 <xsl:element name="quote">
478 <xsl:element name="emphasis">
479 <xsl:apply-templates/>
480 </xsl:element>
481 </xsl:element>
482 </xsl:template>
484 </xsl:stylesheet>