]> git.stg.codes - stg.git/blob - doc/xslt/html/refentry.xsl
Chapter 4 partialy complete
[stg.git] / doc / xslt / html / refentry.xsl
1 <?xml version='1.0'?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 version='1.0'>
4
5 <!-- ********************************************************************
6      $Id: refentry.xsl 8421 2009-05-04 07:49:49Z bobstayton $
7      ********************************************************************
8
9      This file is part of the XSL DocBook Stylesheet distribution.
10      See ../README or http://docbook.sf.net/release/xsl/current/ for
11      copyright and other information.
12
13      ******************************************************************** -->
14
15 <!-- ==================================================================== -->
16
17 <xsl:template match="reference">
18   <xsl:call-template name="id.warning"/>
19
20   <div>
21     <xsl:call-template name="common.html.attributes">
22       <xsl:with-param name="inherit" select="1"/>
23     </xsl:call-template>
24     <xsl:if test="$generate.id.attributes != 0">
25       <xsl:attribute name="id">
26         <xsl:call-template name="object.id"/>
27       </xsl:attribute>
28     </xsl:if>
29
30     <xsl:call-template name="reference.titlepage"/>
31
32     <xsl:variable name="toc.params">
33       <xsl:call-template name="find.path.params">
34         <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
35       </xsl:call-template>
36     </xsl:variable>
37
38     <xsl:if test="not(partintro) and contains($toc.params, 'toc')">
39       <xsl:call-template name="division.toc"/>
40     </xsl:if>
41     <xsl:apply-templates/>
42   </div>
43 </xsl:template>
44
45 <xsl:template match="reference" mode="division.number">
46   <xsl:number from="book" count="reference" format="I."/>
47 </xsl:template>
48
49 <xsl:template match="reference/docinfo"></xsl:template>
50 <xsl:template match="reference/referenceinfo"></xsl:template>
51 <xsl:template match="reference/title"></xsl:template>
52 <xsl:template match="reference/subtitle"></xsl:template>
53 <xsl:template match="reference/titleabbrev"></xsl:template>
54
55 <!-- ==================================================================== -->
56
57 <xsl:template name="refentry.title">
58   <xsl:param name="node" select="."/>
59   <xsl:variable name="refmeta" select="$node//refmeta"/>
60   <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/>
61   <xsl:variable name="refnamediv" select="$node//refnamediv"/>
62   <xsl:variable name="refname" select="$refnamediv//refname"/>
63   <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/>
64   <xsl:variable name="title">
65     <xsl:choose>
66       <xsl:when test="$refentrytitle">
67         <xsl:apply-templates select="$refentrytitle[1]" mode="title"/>
68       </xsl:when>
69       <xsl:when test="$refdesc">
70         <xsl:apply-templates select="$refdesc[1]" mode="title"/>
71       </xsl:when>
72       <xsl:when test="$refname">
73         <xsl:apply-templates select="$refname[1]" mode="title"/>
74       </xsl:when>
75       <xsl:otherwise></xsl:otherwise>
76     </xsl:choose>
77   </xsl:variable>
78
79   <h1 class="title">
80     <xsl:copy-of select="$title"/>
81   </h1>
82 </xsl:template>
83
84 <xsl:template match="refentry">
85   <xsl:call-template name="id.warning"/>
86
87   <div>
88     <xsl:call-template name="common.html.attributes">
89       <xsl:with-param name="inherit" select="1"/>
90     </xsl:call-template>
91     <xsl:if test="$refentry.separator != 0 and preceding-sibling::refentry">
92       <div class="refentry.separator">
93         <hr/>
94       </div>
95     </xsl:if>
96     <xsl:call-template name="anchor">
97       <xsl:with-param name="conditional" select="0"/>
98     </xsl:call-template>
99     <xsl:call-template name="refentry.titlepage"/>
100     <xsl:apply-templates/>
101     <xsl:call-template name="process.footnotes"/>
102   </div>
103 </xsl:template>
104
105 <xsl:template match="refentry/docinfo|refentry/refentryinfo"></xsl:template>
106 <xsl:template match="refentry/info"></xsl:template>
107
108 <xsl:template match="refentrytitle|refname|refdescriptor" mode="title">
109   <xsl:apply-templates/>
110 </xsl:template>
111
112 <xsl:template match="refmeta">
113 </xsl:template>
114
115 <xsl:template match="manvolnum">
116   <xsl:if test="$refentry.xref.manvolnum != 0">
117     <xsl:text>(</xsl:text>
118     <xsl:apply-templates/>
119     <xsl:text>)</xsl:text>
120   </xsl:if>
121 </xsl:template>
122
123 <xsl:template match="refmiscinfo">
124 </xsl:template>
125
126 <xsl:template match="refentrytitle">
127   <xsl:call-template name="inline.charseq"/>
128 </xsl:template>
129
130 <xsl:template match="refnamediv">
131   <div>
132     <xsl:call-template name="common.html.attributes">
133       <xsl:with-param name="inherit" select="1"/>
134     </xsl:call-template>
135     <xsl:call-template name="anchor"/>
136
137     <xsl:choose>
138       <xsl:when test="preceding-sibling::refnamediv">
139         <!-- no title on secondary refnamedivs! -->
140       </xsl:when>
141       <xsl:when test="$refentry.generate.name != 0">
142         <h2>
143           <xsl:call-template name="gentext">
144             <xsl:with-param name="key" select="'RefName'"/>
145           </xsl:call-template>
146         </h2>
147       </xsl:when>
148       <xsl:when test="$refentry.generate.title != 0">
149         <h2>
150           <xsl:choose>
151             <xsl:when test="../refmeta/refentrytitle">
152               <xsl:apply-templates select="../refmeta/refentrytitle"/>
153             </xsl:when>
154             <xsl:otherwise>
155               <xsl:apply-templates select="refname[1]"/>
156             </xsl:otherwise>
157           </xsl:choose>
158         </h2>
159       </xsl:when>
160     </xsl:choose>
161
162     <p>
163       <xsl:apply-templates/>
164     </p>
165   </div>
166 </xsl:template>
167
168 <xsl:template match="refname">
169   <xsl:if test="not(preceding-sibling::refdescriptor)">
170     <xsl:apply-templates/>
171     <xsl:if test="following-sibling::refname">
172       <xsl:text>, </xsl:text>
173     </xsl:if>
174   </xsl:if>
175 </xsl:template>
176
177 <xsl:template match="refpurpose">
178   <xsl:if test="node()">
179     <xsl:text> </xsl:text>
180     <xsl:call-template name="dingbat">
181       <xsl:with-param name="dingbat">em-dash</xsl:with-param>
182     </xsl:call-template>
183     <xsl:text> </xsl:text>
184     <xsl:apply-templates/>
185   </xsl:if>
186 </xsl:template>
187
188 <xsl:template match="refdescriptor">
189   <xsl:apply-templates/>
190 </xsl:template>
191
192 <xsl:template match="refclass">
193   <xsl:if test="$refclass.suppress = 0">
194   <b>
195     <xsl:if test="@role">
196       <xsl:value-of select="@role"/>
197       <xsl:text>: </xsl:text>
198     </xsl:if>
199     <xsl:apply-templates/>
200   </b>
201   </xsl:if>
202 </xsl:template>
203
204 <xsl:template match="refsynopsisdiv">
205   <div>
206     <xsl:call-template name="common.html.attributes">
207       <xsl:with-param name="inherit" select="1"/>
208     </xsl:call-template>
209     <xsl:call-template name="anchor"/>
210     <h2>
211       <xsl:choose>
212         <xsl:when test="refsynopsisdiv/title|title">
213           <xsl:apply-templates select="(refsynopsisdiv/title|title)[1]"
214                                mode="titlepage.mode"/>
215         </xsl:when>
216         <xsl:otherwise>
217           <xsl:call-template name="gentext">
218             <xsl:with-param name="key" select="'RefSynopsisDiv'"/>
219           </xsl:call-template>
220         </xsl:otherwise>
221       </xsl:choose>
222     </h2>
223     <xsl:apply-templates/>
224   </div>
225 </xsl:template>
226
227 <xsl:template match="refsynopsisdivinfo"></xsl:template>
228
229 <xsl:template match="refsynopsisdiv/title">
230 </xsl:template>
231
232 <xsl:template match="refsynopsisdiv/title" mode="titlepage.mode">
233   <xsl:apply-templates/>
234 </xsl:template>
235
236 <xsl:template match="refsection|refsect1|refsect2|refsect3">
237   <div>
238     <xsl:call-template name="common.html.attributes">
239       <xsl:with-param name="inherit" select="1"/>
240     </xsl:call-template>
241     <xsl:call-template name="anchor">
242       <xsl:with-param name="conditional" select="0"/>
243     </xsl:call-template>
244     <!-- pick up info title -->
245     <xsl:apply-templates select="(title|info/title)[1]"/>
246     <xsl:apply-templates select="node()[not(self::title) and not(self::info)]"/>
247   </div>
248 </xsl:template>
249
250 <xsl:template match="refsection/title|refsection/info/title">
251   <!-- the ID is output in the block.object call for refsect1 -->
252   <xsl:variable name="level" select="count(ancestor-or-self::refsection)"/>
253   <xsl:variable name="refsynopsisdiv">
254     <xsl:text>0</xsl:text>
255     <xsl:if test="ancestor::refsynopsisdiv">1</xsl:if>
256   </xsl:variable>
257   <xsl:variable name="hlevel">
258     <xsl:choose>
259       <xsl:when test="$level+$refsynopsisdiv &gt; 5">6</xsl:when>
260       <xsl:otherwise>
261         <xsl:value-of select="$level+1+$refsynopsisdiv"/>
262       </xsl:otherwise>
263     </xsl:choose>
264   </xsl:variable>
265   <xsl:element name="h{$hlevel}">
266     <xsl:apply-templates/>
267   </xsl:element>
268 </xsl:template>
269
270 <xsl:template match="refsect1/title|refsect1/info/title">
271   <!-- the ID is output in the block.object call for refsect1 -->
272   <h2>
273     <xsl:apply-templates/>
274   </h2>
275 </xsl:template>
276
277 <xsl:template match="refsect2/title|refsect2/info/title">
278   <!-- the ID is output in the block.object call for refsect2 -->
279   <h3>
280     <xsl:apply-templates/>
281   </h3>
282 </xsl:template>
283
284 <xsl:template match="refsect3/title|refsect3/info/title">
285   <!-- the ID is output in the block.object call for refsect3 -->
286   <h4>
287     <xsl:apply-templates/>
288   </h4>
289 </xsl:template>
290
291 <xsl:template match="refsectioninfo|refsection/info"></xsl:template>
292 <xsl:template match="refsect1info|refsect1/info"></xsl:template>
293 <xsl:template match="refsect2info|refsect2/info"></xsl:template>
294 <xsl:template match="refsect3info|refsect3/info"></xsl:template>
295
296
297 <!-- ==================================================================== -->
298
299 </xsl:stylesheet>