848502c05cd6f4e74a63c995accd45473bd72659
[debian/amanda] / man / xslt / expand-sambadoc.xsl
1 <?xml version='1.0'?>
2 <!-- 
3         Samba-documentation specific stylesheets
4         Published under the GNU GPL
5
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">
14
15         <xsl:import href="../settings.xsl"/>
16
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"/>
18
19         <xsl:param name="xmlSambaNsUri" select="'http://samba.org/common'"/>
20
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>
33
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>
44
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>
59
60         <xsl:template match="reference/refentry/refmeta"/>
61
62         <xsl:template match="reference/refentry/refnamediv"/>
63
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>
72
73
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>
80
81         <xsl:template match="amconfexample/amconfoption|amconfblock/amconfoption">
82
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>
103
104         <xsl:template match="amconfexample/amconfoption|amconfblock/amconfcomment">
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>
113
114         <xsl:template match="amconfexample/amconfoption|amconfblock/amconfsection">
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>
124
125         <xsl:template match="amconfoption">
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>
132
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>
140
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>
148
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>
163
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>
170
171         <xsl:template match="amconfexample">
172                 <xsl:choose>
173                         <xsl:when test="title = ''">
174                                 <xsl:message>
175                                         <xsl:text>Warning: amconfexample 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>
187
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>
196
197         <xsl:template match="amconfexample/title">
198         </xsl:template>
199
200         <xsl:template match="amconfblock">
201                 <xsl:element name="simplelist">
202                         <xsl:apply-templates/>
203                 </xsl:element>
204         </xsl:template>
205
206         <xsl:template match="amconfsection">
207                 <xsl:element name="parameter">
208                         <xsl:apply-templates/>
209                 </xsl:element>
210         </xsl:template>
211
212         <xsl:template match="amconfcomment">
213                 <xsl:text># </xsl:text>
214                 <xsl:apply-templates/>
215         </xsl:template>
216
217         <xsl:template match="smbfile">
218                 <xsl:apply-templates/>
219         </xsl:template>
220
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>
233
234                         <xsl:element name="title">
235                                 <xsl:value-of select="imagedescription"/>
236                         </xsl:element>
237                         <xsl:element name="mediaobject">
238                                 <xsl:element name="imageobject">
239                                         <xsl:attribute name="role"><xsl:text>latex</xsl:text></xsl:attribute>
240                                         <xsl:element name="imagedata">
241                                                 <xsl:attribute name="fileref">
242                                                         <xsl:value-of select="$imagedir"/><xsl:value-of select="imagefile"/></xsl:attribute>
243                                                 <xsl:attribute name="scale">
244                                                         <xsl:choose>
245                                                                 <xsl:when test="@scale != ''">
246                                                                         <xsl:value-of select="@scale"/>
247                                                                 </xsl:when>
248
249                                                                 <xsl:otherwise>
250                                                                         <xsl:text>50</xsl:text>
251                                                                 </xsl:otherwise>
252                                                         </xsl:choose>
253                                                 </xsl:attribute>
254                                                 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
255                                         </xsl:element>
256                                 </xsl:element>
257                                 <xsl:element name="imageobject">
258                                         <xsl:attribute name="role"><xsl:text>html</xsl:text></xsl:attribute>
259                                         <xsl:element name="imagedata">
260                                                 <xsl:attribute name="fileref">
261                                                         <xsl:text>images/</xsl:text><xsl:value-of select="imagefile"/><xsl:text>.png</xsl:text></xsl:attribute>
262                                                 <xsl:attribute name="scale"><xsl:text>50</xsl:text></xsl:attribute>
263                                                 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
264                                         </xsl:element>
265                                 </xsl:element>
266                                 <xsl:element name="imageobject">
267                                         <xsl:element name="imagedata">
268                                                 <xsl:attribute name="fileref">
269                                                         <xsl:text>images/</xsl:text><xsl:value-of select="imagefile"/><xsl:text>.png</xsl:text></xsl:attribute>
270                                                 <xsl:attribute name="scale"><xsl:text>50</xsl:text></xsl:attribute>
271                                                 <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
272                                         </xsl:element>
273                                 </xsl:element>
274
275                         </xsl:element>
276                 </xsl:element>
277         </xsl:template>
278
279         <xsl:template match="description"><xsl:apply-templates/></xsl:template>
280
281         <xsl:template match="value"><xsl:apply-templates/></xsl:template>
282
283         <xsl:template match="synonym"><xsl:apply-templates/></xsl:template>
284
285         <xsl:template match="related"><xsl:apply-templates/></xsl:template>
286
287         <xsl:template match="filterline">
288                 <xsl:element name="programlisting">
289                         <xsl:apply-templates/>
290                 </xsl:element>
291         </xsl:template>
292
293         <xsl:template match="//samba:parameterlist">
294                 <xsl:apply-templates>
295                         <xsl:sort select="varlistentry/term/anchor"/>
296                 </xsl:apply-templates>
297         </xsl:template>
298
299         <xsl:template match="value/comment">
300                 <xsl:text>&#10;# </xsl:text>
301                 <xsl:apply-templates/>
302         </xsl:template>
303
304         <xsl:template match="//samba:parameter">
305                 <!-- reconstruct varlistentry - not all of them will go into separate files
306                 and also we must repair the main varlistentry itself.
307                 -->
308                 <xsl:variable name="cname"><xsl:value-of select="translate(translate(string(@name),' ',''),
309                                 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
310                 </xsl:variable>
311
312                 <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
313
314                 <xsl:variable name="anchor">
315                         <xsl:element name="anchor">
316                                 <xsl:attribute name="id">
317                                         <xsl:value-of select="$cname"/>
318                                 </xsl:attribute>
319                         </xsl:element>
320                 </xsl:variable>
321
322                 <xsl:variable name="context">
323                         <xsl:text> (</xsl:text>
324                         <xsl:value-of select="@context"/>
325                         <xsl:text>)</xsl:text>
326                 </xsl:variable>
327
328                 <xsl:variable name="term">
329                         <xsl:element name="term">
330                                 <xsl:copy-of select="$anchor"/>
331                                 <xsl:value-of select="@name"/>
332                                 <xsl:value-of select="$context"/>
333                         </xsl:element>
334                 </xsl:variable>
335
336
337                 <!-- Generate list of examples -->
338                 <xsl:variable name="examples">
339                         <xsl:for-each select="value">
340                                 <xsl:if test="@type = 'example'">
341                                         <xsl:element name="para">
342                                                 <xsl:text>Example: </xsl:text>
343                                                 <xsl:element name="emphasis">
344                                                         <xsl:element name="parameter">
345                                                                 <xsl:copy-of select="$name"/>
346                                                         </xsl:element>
347                                                         <xsl:text> = </xsl:text>
348                                                         <xsl:apply-templates select="."/>
349                                                         <xsl:text>&#10;</xsl:text>
350                                                 </xsl:element>
351                                                 <xsl:text>&#10;</xsl:text>
352                                         </xsl:element>
353                                 </xsl:if>
354                         </xsl:for-each>
355                 </xsl:variable>
356
357                 <xsl:variable name="tdefault">
358                         <xsl:for-each select="value">
359                                 <xsl:if test="@type = 'default'">
360                                         <xsl:element name="para">
361                                                 <xsl:text>Default: </xsl:text>
362                                                 <xsl:element name="emphasis">
363                                                         <xsl:element name="parameter">
364                                                                 <xsl:copy-of select="$name"/>
365                                                         </xsl:element>
366                                                         <xsl:text> = </xsl:text>
367                                                         <xsl:apply-templates select="."/>
368                                                         <xsl:text>&#10;</xsl:text>
369                                                 </xsl:element>
370                                                 <xsl:text>&#10;</xsl:text>
371                                         </xsl:element>
372                                 </xsl:if>
373                         </xsl:for-each>
374                 </xsl:variable>
375
376                 <xsl:variable name="default">
377                         <xsl:choose>
378                                 <xsl:when test="$tdefault = ''">
379                                         <xsl:element name="para">
380                                                 <xsl:element name="emphasis">
381                                                         <xsl:text>No default</xsl:text>
382                                                 </xsl:element>  
383                                         </xsl:element>
384                                 </xsl:when>
385                                 <xsl:otherwise>
386                                         <xsl:copy-of select="$tdefault"/>
387                                 </xsl:otherwise>
388                         </xsl:choose>
389                 </xsl:variable>
390
391                 <xsl:variable name="content">
392                         <xsl:apply-templates select="description"/>
393                 </xsl:variable>
394
395                 <xsl:for-each select="synonym">
396                         <xsl:element name="varlistentry">
397                                 <xsl:text>&#10;</xsl:text>     
398                                 <xsl:element name="indexterm">
399                                         <xsl:attribute name="significance">
400                                                 <xsl:text>preferred</xsl:text>
401                                         </xsl:attribute>
402                                         <xsl:element name="primary">
403                                                 <xsl:value-of select="."/>
404                                         </xsl:element>
405                                         <xsl:element name="see">
406                                                 <xsl:value-of select="$name"/>
407                                         </xsl:element>
408                                 </xsl:element>
409
410                                 <xsl:element name="term">
411                                         <xsl:element name="anchor">
412                                                 <xsl:attribute name="id">
413                                                         <xsl:value-of select="translate(translate(string(.),' ',''), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
414                                                 </xsl:attribute>
415                                         </xsl:element>
416                                         <xsl:value-of select="."/>
417                                 </xsl:element>
418
419                                 <xsl:element name="listitem">
420                                         <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>
421                                 </xsl:element>
422                         </xsl:element>
423                 </xsl:for-each>
424
425                 <xsl:element name="varlistentry">
426                         <xsl:text>&#10;</xsl:text>     
427                         <xsl:element name="indexterm">
428                                 <xsl:attribute name="significance">
429                                         <xsl:text>preferred</xsl:text>
430                                 </xsl:attribute>
431                                 <xsl:element name="primary">
432                                         <xsl:value-of select="@name"/>
433                                 </xsl:element>
434                         </xsl:element>
435                         <xsl:copy-of select="$term"/>
436                         <xsl:element name="listitem">
437                                 <xsl:copy-of select="$content"/> <xsl:text>&#10;</xsl:text>     
438                                 <xsl:copy-of select="$default"/> <xsl:text>&#10;</xsl:text>     
439                                 <xsl:copy-of select="$examples"/> <xsl:text>&#10;</xsl:text>     
440                         </xsl:element>
441                 </xsl:element>
442         </xsl:template>
443
444         <xsl:template match="ulink">
445                 <xsl:element name="ulink">
446                         <xsl:attribute name="url">
447                                 <xsl:value-of select="@url"/>
448                         </xsl:attribute>
449
450                         <xsl:apply-templates/>
451                         <xsl:if test="contains(@url,'http://') or contains(@url,'ftp://')">
452                                 <xsl:if test="$duplicate_ulinks='brackets'">
453                                         <xsl:text> (</xsl:text>
454                                         <xsl:value-of select="@url"/>
455                                         <xsl:text>)</xsl:text>
456                                 </xsl:if>
457                                 <xsl:if test="$duplicate_ulinks='footnote'">
458                                         <xsl:element name="footnote">
459                                                 <xsl:element name="para">
460                                                         <xsl:value-of select="@url"/>
461                                                 </xsl:element>
462                                         </xsl:element>
463                                 </xsl:if>
464                         </xsl:if>
465                 </xsl:element>
466         </xsl:template>
467
468         <!-- Just ignore these -->
469         <xsl:template match="smbfile">
470                 <xsl:apply-templates/>
471         </xsl:template>
472
473         <xsl:template match="quote">
474                 <xsl:element name="quote">
475                         <xsl:element name="emphasis">
476                                 <xsl:apply-templates/>
477                         </xsl:element>
478                 </xsl:element>
479         </xsl:template>
480
481         <!-- New chapter-template for displaying html-urls -->
482
483
484 <xsl:template match="chapter">
485         <xsl:copy>
486                 <xsl:element name="para">
487                 <xsl:element name="note">
488                         <xsl:text>Refer to </xsl:text>
489                         <xsl:element name="ulink">
490                                 <xsl:attribute name="url">
491                                         <xsl:text>http://www.amanda.org/docs/</xsl:text>
492                                         <xsl:value-of select="@id"/>
493                                         <xsl:text>.html</xsl:text>
494                                 </xsl:attribute>
495                                 <xsl:text>http://www.amanda.org/docs/</xsl:text>
496                                 <xsl:value-of select="@id"/>
497                                 <xsl:text>.html</xsl:text>
498                         </xsl:element>
499                         <xsl:text> for the current version of this
500                         document.</xsl:text>
501                 </xsl:element>
502                 </xsl:element>
503                 <xsl:apply-templates select="@*|node()"/>
504         </xsl:copy>
505 </xsl:template>
506
507 </xsl:stylesheet>