Commit | Line | Data |
---|---|---|
7faf1d71 AW |
1 | <?xml version='1.0'?>\r |
2 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r | |
3 | xmlns:exsl="http://exslt.org/common"\r | |
4 | xmlns:fo="http://www.w3.org/1999/XSL/Format"\r | |
5 | xmlns:ng="http://docbook.org/docbook-ng"\r | |
6 | xmlns:db="http://docbook.org/ns/docbook"\r | |
7 | exclude-result-prefixes="db ng exsl"\r | |
8 | version='1.0'>\r | |
9 | \r | |
10 | <!-- It is important to use indent="no" here, otherwise verbatim -->\r | |
11 | <!-- environments get broken by indented tags...at least when the -->\r | |
12 | <!-- callout extension is used...at least with some processors -->\r | |
13 | <xsl:output method="xml" indent="no"/>\r | |
14 | \r | |
15 | <!-- ********************************************************************\r | |
16 | $Id: docbook.xsl 6910 2007-06-28 23:23:30Z xmldoc $\r | |
17 | ********************************************************************\r | |
18 | \r | |
19 | This file is part of the XSL DocBook Stylesheet distribution.\r | |
20 | See ../README or http://docbook.sf.net/release/xsl/current/ for\r | |
21 | copyright and other information.\r | |
22 | \r | |
23 | ******************************************************************** -->\r | |
24 | \r | |
25 | <!-- ==================================================================== -->\r | |
26 | \r | |
27 | <xsl:include href="../VERSION"/>\r | |
28 | <xsl:include href="param.xsl"/>\r | |
29 | <xsl:include href="../lib/lib.xsl"/>\r | |
30 | <xsl:include href="../common/l10n.xsl"/>\r | |
31 | <xsl:include href="../common/common.xsl"/>\r | |
32 | <xsl:include href="../common/utility.xsl"/>\r | |
33 | <xsl:include href="../common/labels.xsl"/>\r | |
34 | <xsl:include href="../common/titles.xsl"/>\r | |
35 | <xsl:include href="../common/subtitles.xsl"/>\r | |
36 | <xsl:include href="../common/gentext.xsl"/>\r | |
37 | <xsl:include href="../common/olink.xsl"/>\r | |
38 | <xsl:include href="../common/targets.xsl"/>\r | |
39 | <xsl:include href="../common/pi.xsl"/>\r | |
40 | <xsl:include href="autotoc.xsl"/>\r | |
41 | <xsl:include href="autoidx.xsl"/>\r | |
42 | <xsl:include href="lists.xsl"/>\r | |
43 | <xsl:include href="callout.xsl"/>\r | |
44 | <xsl:include href="verbatim.xsl"/>\r | |
45 | <xsl:include href="graphics.xsl"/>\r | |
46 | <xsl:include href="xref.xsl"/>\r | |
47 | <xsl:include href="formal.xsl"/>\r | |
48 | <xsl:include href="table.xsl"/>\r | |
49 | <xsl:include href="htmltbl.xsl"/>\r | |
50 | <xsl:include href="sections.xsl"/>\r | |
51 | <xsl:include href="inline.xsl"/>\r | |
52 | <xsl:include href="footnote.xsl"/>\r | |
53 | <xsl:include href="fo.xsl"/>\r | |
54 | <xsl:include href="fo-rtf.xsl"/>\r | |
55 | <xsl:include href="info.xsl"/>\r | |
56 | <xsl:include href="keywords.xsl"/>\r | |
57 | <xsl:include href="division.xsl"/>\r | |
58 | <xsl:include href="index.xsl"/>\r | |
59 | <xsl:include href="toc.xsl"/>\r | |
60 | <xsl:include href="refentry.xsl"/>\r | |
61 | <xsl:include href="math.xsl"/>\r | |
62 | <xsl:include href="admon.xsl"/>\r | |
63 | <xsl:include href="component.xsl"/>\r | |
64 | <xsl:include href="biblio.xsl"/>\r | |
65 | <xsl:include href="biblio-iso690.xsl"/>\r | |
66 | <xsl:include href="glossary.xsl"/>\r | |
67 | <xsl:include href="block.xsl"/>\r | |
68 | <xsl:include href="task.xsl"/>\r | |
69 | <xsl:include href="qandaset.xsl"/>\r | |
70 | <xsl:include href="synop.xsl"/>\r | |
71 | <xsl:include href="titlepage.xsl"/>\r | |
72 | <xsl:include href="titlepage.templates.xsl"/>\r | |
73 | <xsl:include href="pagesetup.xsl"/>\r | |
74 | <xsl:include href="pi.xsl"/>\r | |
75 | <xsl:include href="spaces.xsl"/>\r | |
76 | <xsl:include href="ebnf.xsl"/>\r | |
77 | <xsl:include href="../html/chunker.xsl"/>\r | |
78 | <xsl:include href="annotations.xsl"/>\r | |
79 | <xsl:include href="../common/stripns.xsl"/>\r | |
80 | \r | |
81 | <xsl:include href="fop.xsl"/>\r | |
82 | <xsl:include href="fop1.xsl"/>\r | |
83 | <xsl:include href="passivetex.xsl"/>\r | |
84 | <xsl:include href="xep.xsl"/>\r | |
85 | <xsl:include href="axf.xsl"/>\r | |
86 | <xsl:include href="ptc.xsl"/>\r | |
87 | \r | |
88 | <xsl:param name="stylesheet.result.type" select="'fo'"/>\r | |
89 | \r | |
90 | \r | |
91 | <!-- BEI -->\r | |
92 | <xsl:param name="symbol.font.family">Symbol,ZapfDingbats,Lucida Sans Unicode</xsl:param>\r | |
93 | <xsl:param name="funcsynopsis.style">ansi</xsl:param>\r | |
94 | <xsl:param name="citerefentry.link" select="1"></xsl:param>\r | |
95 | \r | |
96 | <xsl:template match="symbol[@role = 'symbolfont']">\r | |
97 | <fo:inline font-family="Symbol,ZapfDingbats,Lucida Sans Unicode">\r | |
98 | <xsl:apply-templates/>\r | |
99 | </fo:inline>\r | |
100 | </xsl:template>\r | |
101 | \r | |
102 | \r | |
103 | \r | |
104 | \r | |
105 | <!-- ==================================================================== -->\r | |
106 | \r | |
107 | <xsl:key name="id" match="*" use="@id|@xml:id"/>\r | |
108 | \r | |
109 | <!-- ==================================================================== -->\r | |
110 | \r | |
111 | <xsl:template match="*">\r | |
112 | <xsl:message>\r | |
113 | <xsl:value-of select="name(.)"/>\r | |
114 | <xsl:text> encountered</xsl:text>\r | |
115 | <xsl:if test="parent::*">\r | |
116 | <xsl:text> in </xsl:text>\r | |
117 | <xsl:value-of select="name(parent::*)"/>\r | |
118 | </xsl:if>\r | |
119 | <xsl:text>, but no template matches.</xsl:text>\r | |
120 | </xsl:message>\r | |
121 | <fo:block color="red">\r | |
122 | <xsl:text><</xsl:text>\r | |
123 | <xsl:value-of select="name(.)"/>\r | |
124 | <xsl:text>></xsl:text>\r | |
125 | <xsl:apply-templates/> \r | |
126 | <xsl:text></</xsl:text>\r | |
127 | <xsl:value-of select="name(.)"/>\r | |
128 | <xsl:text>></xsl:text>\r | |
129 | </fo:block>\r | |
130 | </xsl:template>\r | |
131 | \r | |
132 | <!-- Update this list if new root elements supported -->\r | |
133 | <xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/>\r | |
134 | \r | |
135 | \r | |
136 | \r | |
137 | \r | |
138 | <xsl:template match="/">\r | |
139 | <!-- * Get a title for current doc so that we let the user -->\r | |
140 | <!-- * know what document we are processing at this point. -->\r | |
141 | <xsl:variable name="doc.title">\r | |
142 | <xsl:call-template name="get.doc.title"/>\r | |
143 | </xsl:variable>\r | |
144 | <xsl:choose>\r | |
145 | <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document,\r | |
146 | toss the namespace and continue. Use the docbook5 namespaced\r | |
147 | stylesheets for DocBook5 if you don't want to use this feature.-->\r | |
148 | <!-- include extra test for Xalan quirk -->\r | |
149 | <xsl:when test="(function-available('exsl:node-set') or\r | |
150 | contains(system-property('xsl:vendor'),\r | |
151 | 'Apache Software Foundation'))\r | |
152 | and (*/self::ng:* or */self::db:*)">\r | |
153 | <xsl:call-template name="log.message">\r | |
154 | <xsl:with-param name="level">Note</xsl:with-param>\r | |
155 | <xsl:with-param name="source" select="$doc.title"/>\r | |
156 | <xsl:with-param name="context-desc">\r | |
157 | <xsl:text>namesp. cut</xsl:text>\r | |
158 | </xsl:with-param>\r | |
159 | <xsl:with-param name="message">\r | |
160 | <xsl:text>stripped namespace before processing</xsl:text>\r | |
161 | </xsl:with-param>\r | |
162 | </xsl:call-template>\r | |
163 | <xsl:variable name="nons">\r | |
164 | <xsl:apply-templates mode="stripNS"/>\r | |
165 | </xsl:variable>\r | |
166 | <xsl:call-template name="log.message">\r | |
167 | <xsl:with-param name="level">Note</xsl:with-param>\r | |
168 | <xsl:with-param name="source" select="$doc.title"/>\r | |
169 | <xsl:with-param name="context-desc">\r | |
170 | <xsl:text>namesp. cut</xsl:text>\r | |
171 | </xsl:with-param>\r | |
172 | <xsl:with-param name="message">\r | |
173 | <xsl:text>processing stripped document</xsl:text>\r | |
174 | </xsl:with-param>\r | |
175 | </xsl:call-template>\r | |
176 | <xsl:apply-templates select="exsl:node-set($nons)"/>\r | |
177 | </xsl:when>\r | |
178 | <!-- Can't process unless namespace removed -->\r | |
179 | <xsl:when test="*/self::ng:* or */self::db:*">\r | |
180 | <xsl:message terminate="yes">\r | |
181 | <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text>\r | |
182 | <xsl:text> cannot proceed.</xsl:text>\r | |
183 | </xsl:message>\r | |
184 | </xsl:when>\r | |
185 | <xsl:otherwise>\r | |
186 | <xsl:choose>\r | |
187 | <xsl:when test="$rootid != ''">\r | |
188 | <xsl:variable name="root.element" select="key('id', $rootid)"/>\r | |
189 | <xsl:choose>\r | |
190 | <xsl:when test="count($root.element) = 0">\r | |
191 | <xsl:message terminate="yes">\r | |
192 | <xsl:text>ID '</xsl:text>\r | |
193 | <xsl:value-of select="$rootid"/>\r | |
194 | <xsl:text>' not found in document.</xsl:text>\r | |
195 | </xsl:message>\r | |
196 | </xsl:when>\r | |
197 | <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))">\r | |
198 | <xsl:message terminate="yes">\r | |
199 | <xsl:text>ERROR: Document root element ($rootid=</xsl:text>\r | |
200 | <xsl:value-of select="$rootid"/>\r | |
201 | <xsl:text>) for FO output </xsl:text>\r | |
202 | <xsl:text>must be one of the following elements:</xsl:text>\r | |
203 | <xsl:value-of select="$root.elements"/>\r | |
204 | </xsl:message>\r | |
205 | </xsl:when>\r | |
206 | <!-- Otherwise proceed -->\r | |
207 | <xsl:otherwise>\r | |
208 | <xsl:if test="$collect.xref.targets = 'yes' or\r | |
209 | $collect.xref.targets = 'only'">\r | |
210 | <xsl:apply-templates select="$root.element"\r | |
211 | mode="collect.targets"/>\r | |
212 | </xsl:if>\r | |
213 | <xsl:if test="$collect.xref.targets != 'only'">\r | |
214 | <xsl:apply-templates select="$root.element"\r | |
215 | mode="process.root"/>\r | |
216 | </xsl:if>\r | |
217 | </xsl:otherwise>\r | |
218 | </xsl:choose>\r | |
219 | </xsl:when>\r | |
220 | <!-- Otherwise process the document root element -->\r | |
221 | <xsl:otherwise>\r | |
222 | <xsl:variable name="document.element" select="*[1]"/>\r | |
223 | <xsl:choose>\r | |
224 | <xsl:when test="not(contains($root.elements,\r | |
225 | concat(' ', local-name($document.element), ' ')))">\r | |
226 | <xsl:message terminate="yes">\r | |
227 | <xsl:text>ERROR: Document root element for FO output </xsl:text>\r | |
228 | <xsl:text>must be one of the following elements:</xsl:text>\r | |
229 | <xsl:value-of select="$root.elements"/>\r | |
230 | </xsl:message>\r | |
231 | </xsl:when>\r | |
232 | <!-- Otherwise proceed -->\r | |
233 | <xsl:otherwise>\r | |
234 | <xsl:if test="$collect.xref.targets = 'yes' or\r | |
235 | $collect.xref.targets = 'only'">\r | |
236 | <xsl:apply-templates select="/"\r | |
237 | mode="collect.targets"/>\r | |
238 | </xsl:if>\r | |
239 | <xsl:if test="$collect.xref.targets != 'only'">\r | |
240 | <xsl:apply-templates select="/"\r | |
241 | mode="process.root"/>\r | |
242 | </xsl:if>\r | |
243 | </xsl:otherwise>\r | |
244 | </xsl:choose>\r | |
245 | </xsl:otherwise>\r | |
246 | </xsl:choose>\r | |
247 | </xsl:otherwise>\r | |
248 | </xsl:choose>\r | |
249 | </xsl:template>\r | |
250 | \r | |
251 | <xsl:template match="*" mode="process.root">\r | |
252 | <xsl:variable name="document.element" select="self::*"/>\r | |
253 | \r | |
254 | <xsl:call-template name="root.messages"/>\r | |
255 | \r | |
256 | <xsl:variable name="title">\r | |
257 | <xsl:choose>\r | |
258 | <xsl:when test="$document.element/title[1]">\r | |
259 | <xsl:value-of select="$document.element/title[1]"/>\r | |
260 | </xsl:when>\r | |
261 | <xsl:otherwise>[could not find document title]</xsl:otherwise>\r | |
262 | </xsl:choose>\r | |
263 | </xsl:variable>\r | |
264 | \r | |
265 | <!-- Include all id values in XEP output -->\r | |
266 | <xsl:if test="$xep.extensions != 0">\r | |
267 | <xsl:processing-instruction \r | |
268 | name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction>\r | |
269 | </xsl:if>\r | |
270 | \r | |
271 | <fo:root xsl:use-attribute-sets="root.properties">\r | |
272 | <xsl:attribute name="language">\r | |
273 | <xsl:call-template name="l10n.language">\r | |
274 | <xsl:with-param name="target" select="/*[1]"/>\r | |
275 | </xsl:call-template>\r | |
276 | </xsl:attribute>\r | |
277 | \r | |
278 | <xsl:if test="$xep.extensions != 0">\r | |
279 | <xsl:call-template name="xep-pis"/>\r | |
280 | <xsl:call-template name="xep-document-information"/>\r | |
281 | </xsl:if>\r | |
282 | <xsl:if test="$axf.extensions != 0">\r | |
283 | <xsl:call-template name="axf-document-information"/>\r | |
284 | </xsl:if>\r | |
285 | \r | |
286 | <xsl:call-template name="setup.pagemasters"/>\r | |
287 | \r | |
288 | <xsl:if test="$fop.extensions != 0">\r | |
289 | <xsl:apply-templates select="$document.element" mode="fop.outline"/>\r | |
290 | </xsl:if>\r | |
291 | \r | |
292 | <xsl:if test="$fop1.extensions != 0">\r | |
293 | <xsl:variable name="bookmarks">\r | |
294 | <xsl:apply-templates select="$document.element" \r | |
295 | mode="fop1.outline"/>\r | |
296 | </xsl:variable>\r | |
297 | <xsl:if test="string($bookmarks) != ''">\r | |
298 | <fo:bookmark-tree>\r | |
299 | <xsl:copy-of select="$bookmarks"/>\r | |
300 | </fo:bookmark-tree>\r | |
301 | </xsl:if>\r | |
302 | </xsl:if>\r | |
303 | \r | |
304 | <xsl:if test="$xep.extensions != 0">\r | |
305 | <xsl:variable name="bookmarks">\r | |
306 | <xsl:apply-templates select="$document.element" mode="xep.outline"/>\r | |
307 | </xsl:variable>\r | |
308 | <xsl:if test="string($bookmarks) != ''">\r | |
309 | <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions">\r | |
310 | <xsl:copy-of select="$bookmarks"/>\r | |
311 | </rx:outline>\r | |
312 | </xsl:if>\r | |
313 | </xsl:if>\r | |
314 | \r | |
315 | <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0">\r | |
316 | <xsl:variable name="bookmarks">\r | |
317 | <xsl:apply-templates select="$document.element"\r | |
318 | mode="ati.xsl11.bookmarks"/>\r | |
319 | </xsl:variable>\r | |
320 | <xsl:if test="string($bookmarks) != ''">\r | |
321 | <fo:bookmark-tree>\r | |
322 | <xsl:copy-of select="$bookmarks"/>\r | |
323 | </fo:bookmark-tree>\r | |
324 | </xsl:if>\r | |
325 | </xsl:if>\r | |
326 | \r | |
327 | <xsl:apply-templates select="$document.element"/>\r | |
328 | </fo:root>\r | |
329 | </xsl:template>\r | |
330 | \r | |
331 | <xsl:template name="root.messages">\r | |
332 | <!-- redefine this any way you'd like to output messages -->\r | |
333 | <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE -->\r | |
334 | <xsl:message>\r | |
335 | <xsl:text>Making </xsl:text>\r | |
336 | <xsl:value-of select="$page.orientation"/>\r | |
337 | <xsl:text> pages on </xsl:text>\r | |
338 | <xsl:value-of select="$paper.type"/>\r | |
339 | <xsl:text> paper (</xsl:text>\r | |
340 | <xsl:value-of select="$page.width"/>\r | |
341 | <xsl:text>x</xsl:text>\r | |
342 | <xsl:value-of select="$page.height"/>\r | |
343 | <xsl:text>)</xsl:text>\r | |
344 | </xsl:message>\r | |
345 | </xsl:template>\r | |
346 | \r | |
347 | <!-- ==================================================================== -->\r | |
348 | \r | |
349 | </xsl:stylesheet>\r |