]> git.stg.codes - stg.git/blob - doc/xslt/fo/biblio.xsl
Pre-allocate DIR_TRAFF container with DIR_NUM items.
[stg.git] / doc / xslt / fo / biblio.xsl
1 <?xml version='1.0'?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
4                 version='1.0'>
5
6 <!-- ********************************************************************
7      $Id: biblio.xsl 7467 2007-09-27 16:10:31Z bobstayton $
8      ********************************************************************
9
10      This file is part of the XSL DocBook Stylesheet distribution.
11      See ../README or http://docbook.sf.net/release/xsl/current/ for
12      copyright and other information.
13
14      ******************************************************************** -->
15
16 <!-- ==================================================================== -->
17
18 <xsl:template match="bibliography">
19   <xsl:variable name="id">
20     <xsl:call-template name="object.id"/>
21   </xsl:variable>
22
23   <xsl:choose>
24     <xsl:when test="not(parent::*) or parent::part or parent::book">
25       <xsl:variable name="master-reference">
26         <xsl:call-template name="select.pagemaster"/>
27       </xsl:variable>
28
29       <fo:page-sequence hyphenate="{$hyphenate}"
30                         master-reference="{$master-reference}">
31         <xsl:attribute name="language">
32           <xsl:call-template name="l10n.language"/>
33         </xsl:attribute>
34         <xsl:attribute name="format">
35           <xsl:call-template name="page.number.format">
36             <xsl:with-param name="master-reference" select="$master-reference"/>
37           </xsl:call-template>
38         </xsl:attribute>
39         <xsl:attribute name="initial-page-number">
40           <xsl:call-template name="initial.page.number">
41             <xsl:with-param name="master-reference" select="$master-reference"/>
42           </xsl:call-template>
43         </xsl:attribute>
44         <xsl:attribute name="force-page-count">
45           <xsl:call-template name="force.page.count">
46             <xsl:with-param name="master-reference" select="$master-reference"/>
47           </xsl:call-template>
48         </xsl:attribute>
49         <xsl:attribute name="hyphenation-character">
50           <xsl:call-template name="gentext">
51             <xsl:with-param name="key" select="'hyphenation-character'"/>
52           </xsl:call-template>
53         </xsl:attribute>
54         <xsl:attribute name="hyphenation-push-character-count">
55           <xsl:call-template name="gentext">
56             <xsl:with-param name="key" select="'hyphenation-push-character-count'"/>
57           </xsl:call-template>
58         </xsl:attribute>
59         <xsl:attribute name="hyphenation-remain-character-count">
60           <xsl:call-template name="gentext">
61             <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/>
62           </xsl:call-template>
63         </xsl:attribute>
64
65         <xsl:apply-templates select="." mode="running.head.mode">
66           <xsl:with-param name="master-reference" select="$master-reference"/>
67         </xsl:apply-templates>
68         <xsl:apply-templates select="." mode="running.foot.mode">
69           <xsl:with-param name="master-reference" select="$master-reference"/>
70         </xsl:apply-templates>
71
72         <fo:flow flow-name="xsl-region-body">
73           <xsl:call-template name="set.flow.properties">
74             <xsl:with-param name="element" select="local-name(.)"/>
75             <xsl:with-param name="master-reference" select="$master-reference"/>
76           </xsl:call-template>
77
78           <fo:block id="{$id}">
79             <xsl:call-template name="bibliography.titlepage"/>
80           </fo:block>
81           <xsl:apply-templates/>
82         </fo:flow>
83       </fo:page-sequence>
84     </xsl:when>
85     <xsl:otherwise>
86       <fo:block id="{$id}"
87                 space-before.minimum="1em"
88                 space-before.optimum="1.5em"
89                 space-before.maximum="2em">
90         <xsl:call-template name="bibliography.titlepage"/>
91       </fo:block>
92       <xsl:apply-templates/>
93     </xsl:otherwise>
94   </xsl:choose>
95 </xsl:template>
96
97 <xsl:template match="bibliography/bibliographyinfo"></xsl:template>
98 <xsl:template match="bibliography/info"></xsl:template>
99 <xsl:template match="bibliography/title"></xsl:template>
100 <xsl:template match="bibliography/subtitle"></xsl:template>
101 <xsl:template match="bibliography/titleabbrev"></xsl:template>
102
103 <!-- ==================================================================== -->
104
105 <xsl:template match="bibliodiv">
106   <fo:block>
107     <xsl:attribute name="id">
108       <xsl:call-template name="object.id"/>
109     </xsl:attribute>
110     <xsl:call-template name="bibliodiv.titlepage"/>
111     <xsl:apply-templates/>
112   </fo:block>
113 </xsl:template>
114
115 <xsl:template match="bibliodiv/title"/>
116 <xsl:template match="bibliodiv/subtitle"/>
117 <xsl:template match="bibliodiv/titleabbrev"/>
118
119 <!-- ==================================================================== -->
120
121 <xsl:template match="bibliolist">
122   <xsl:variable name="id">
123     <xsl:call-template name="object.id"/>
124   </xsl:variable>
125
126   <fo:block id="{$id}"
127             space-before.minimum="1em"
128             space-before.optimum="1.5em"
129             space-before.maximum="2em">
130
131     <xsl:if test="blockinfo/title|info/title|title">
132       <xsl:call-template name="formal.object.heading"/>
133     </xsl:if>
134
135     <xsl:apply-templates select="*[not(self::blockinfo)
136                                    and not(self::info)
137                                    and not(self::title)
138                                    and not(self::titleabbrev)]"/>
139   </fo:block>
140 </xsl:template>
141
142 <!-- ==================================================================== -->
143
144 <xsl:template match="biblioentry">
145   <xsl:param name="label">
146     <xsl:call-template name="biblioentry.label"/>
147   </xsl:param>
148
149   <xsl:variable name="id">
150     <xsl:call-template name="object.id"/>
151   </xsl:variable>
152
153   <xsl:choose>
154     <xsl:when test="string(.) = ''">
155       <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
156       <xsl:variable name="entry" select="$bib/bibliography//
157                                          *[@id=$id or @xml:id=$id][1]"/>
158       <xsl:choose>
159         <xsl:when test="$entry">
160           <xsl:choose>
161             <xsl:when test="$bibliography.numbered != 0">
162               <xsl:apply-templates select="$entry">
163                 <xsl:with-param name="label" select="$label"/>
164               </xsl:apply-templates>
165             </xsl:when>
166             <xsl:otherwise>
167               <xsl:apply-templates select="$entry"/>
168             </xsl:otherwise>
169           </xsl:choose>
170         </xsl:when>
171         <xsl:otherwise>
172           <xsl:message>
173             <xsl:text>No bibliography entry: </xsl:text>
174             <xsl:value-of select="$id"/>
175             <xsl:text> found in </xsl:text>
176             <xsl:value-of select="$bibliography.collection"/>
177           </xsl:message>
178           <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
179             <xsl:text>Error: no bibliography entry: </xsl:text>
180             <xsl:value-of select="$id"/>
181             <xsl:text> found in </xsl:text>
182             <xsl:value-of select="$bibliography.collection"/>
183           </fo:block>
184         </xsl:otherwise>
185       </xsl:choose>
186     </xsl:when>
187     <xsl:otherwise>
188       <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties">
189         <xsl:copy-of select="$label"/>
190         <xsl:choose>
191           <xsl:when test="$bibliography.style = 'iso690'">
192             <xsl:call-template name="iso690.makecitation"/>
193           </xsl:when>
194           <xsl:otherwise>
195             <xsl:apply-templates mode="bibliography.mode"/>
196           </xsl:otherwise>
197         </xsl:choose>
198       </fo:block>
199     </xsl:otherwise>
200   </xsl:choose>
201 </xsl:template>
202
203 <xsl:template match="bibliomixed">
204   <xsl:param name="label">
205     <xsl:call-template name="biblioentry.label"/>
206   </xsl:param>
207
208   <xsl:variable name="id">
209     <xsl:call-template name="object.id"/>
210   </xsl:variable>
211
212   <xsl:choose>
213     <xsl:when test="string(.) = ''">
214       <xsl:variable name="bib" select="document($bibliography.collection,.)"/>
215       <xsl:variable name="entry" select="$bib/bibliography//
216                                          *[@id=$id or @xml:id=$id][1]"/>
217       <xsl:choose>
218         <xsl:when test="$entry">
219           <xsl:choose>
220             <xsl:when test="$bibliography.numbered != 0">
221               <xsl:apply-templates select="$entry">
222                 <xsl:with-param name="label" select="$label"/>
223               </xsl:apply-templates>
224             </xsl:when>
225             <xsl:otherwise>
226               <xsl:apply-templates select="$entry"/>
227             </xsl:otherwise>
228           </xsl:choose>
229         </xsl:when>
230         <xsl:otherwise>
231           <xsl:message>
232             <xsl:text>No bibliography entry: </xsl:text>
233             <xsl:value-of select="$id"/>
234             <xsl:text> found in </xsl:text>
235             <xsl:value-of select="$bibliography.collection"/>
236           </xsl:message>
237           <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing">
238             <xsl:text>Error: no bibliography entry: </xsl:text>
239             <xsl:value-of select="$id"/>
240             <xsl:text> found in </xsl:text>
241             <xsl:value-of select="$bibliography.collection"/>
242           </fo:block>
243         </xsl:otherwise>
244       </xsl:choose>
245     </xsl:when>
246     <xsl:otherwise>
247       <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties">
248         <xsl:copy-of select="$label"/>
249         <xsl:apply-templates mode="bibliomixed.mode"/>
250       </fo:block>
251     </xsl:otherwise>
252   </xsl:choose>
253 </xsl:template>
254
255 <xsl:template name="biblioentry.label">
256   <xsl:param name="node" select="."/>
257
258   <xsl:choose>
259     <xsl:when test="$bibliography.numbered != 0">
260       <xsl:text>[</xsl:text>
261       <xsl:number from="bibliography" count="biblioentry|bibliomixed"
262                   level="any" format="1"/>
263       <xsl:text>] </xsl:text>
264     </xsl:when>
265     <xsl:when test="local-name($node/child::*[1]) = 'abbrev'">
266       <xsl:text>[</xsl:text>
267       <xsl:apply-templates select="$node/abbrev[1]"/>
268       <xsl:text>] </xsl:text>
269     </xsl:when>
270     <xsl:when test="$node/@xreflabel">
271       <xsl:text>[</xsl:text>
272       <xsl:value-of select="$node/@xreflabel"/>
273       <xsl:text>] </xsl:text>
274     </xsl:when>
275     <xsl:when test="$node/@id or $node/@xml:id">
276       <xsl:text>[</xsl:text>
277       <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/>
278       <xsl:text>] </xsl:text>
279     </xsl:when>
280     <xsl:otherwise><!-- nop --></xsl:otherwise>
281   </xsl:choose>
282 </xsl:template>
283
284 <!-- ==================================================================== -->
285
286 <xsl:template match="*" mode="bibliography.mode">
287   <xsl:apply-templates select="."/><!-- try the default mode -->
288 </xsl:template>
289
290 <xsl:template match="abbrev" mode="bibliography.mode">
291   <xsl:if test="preceding-sibling::*">
292     <fo:inline>
293       <xsl:apply-templates mode="bibliography.mode"/>
294     </fo:inline>
295   </xsl:if>
296 </xsl:template>
297
298 <xsl:template match="abstract" mode="bibliography.mode">
299   <!-- suppressed -->
300 </xsl:template>
301
302 <xsl:template match="address" mode="bibliography.mode">
303   <fo:inline>
304     <xsl:apply-templates mode="bibliography.mode"/>
305     <xsl:value-of select="$biblioentry.item.separator"/>
306   </fo:inline>
307 </xsl:template>
308
309 <xsl:template match="affiliation" mode="bibliography.mode">
310   <fo:inline>
311     <xsl:apply-templates mode="bibliography.mode"/>
312     <xsl:value-of select="$biblioentry.item.separator"/>
313   </fo:inline>
314 </xsl:template>
315
316 <xsl:template match="shortaffil" mode="bibliography.mode">
317   <fo:inline>
318     <xsl:apply-templates mode="bibliography.mode"/>
319     <xsl:value-of select="$biblioentry.item.separator"/>
320   </fo:inline>
321 </xsl:template>
322
323 <xsl:template match="jobtitle" mode="bibliography.mode">
324   <fo:inline>
325     <xsl:apply-templates mode="bibliography.mode"/>
326     <xsl:value-of select="$biblioentry.item.separator"/>
327   </fo:inline>
328 </xsl:template>
329
330 <xsl:template match="artheader|articleinfo|article/info" 
331               mode="bibliography.mode">
332   <fo:inline>
333     <xsl:apply-templates mode="bibliography.mode"/>
334     <xsl:value-of select="$biblioentry.item.separator"/>
335   </fo:inline>
336 </xsl:template>
337
338 <xsl:template match="artpagenums" mode="bibliography.mode">
339   <fo:inline>
340     <xsl:apply-templates mode="bibliography.mode"/>
341     <xsl:value-of select="$biblioentry.item.separator"/>
342   </fo:inline>
343 </xsl:template>
344
345 <xsl:template match="author" mode="bibliography.mode">
346   <fo:inline>
347     <xsl:call-template name="person.name"/>
348     <xsl:value-of select="$biblioentry.item.separator"/>
349   </fo:inline>
350 </xsl:template>
351
352 <xsl:template match="authorblurb|personblurb" mode="bibliography.mode">
353   <fo:inline>
354     <xsl:apply-templates mode="bibliography.mode"/>
355     <xsl:value-of select="$biblioentry.item.separator"/>
356   </fo:inline>
357 </xsl:template>
358
359 <xsl:template match="authorgroup" mode="bibliography.mode">
360   <fo:inline>
361     <xsl:call-template name="person.name.list"/>
362     <xsl:value-of select="$biblioentry.item.separator"/>
363   </fo:inline>
364 </xsl:template>
365
366 <xsl:template match="authorinitials" mode="bibliography.mode">
367   <fo:inline>
368     <xsl:apply-templates mode="bibliography.mode"/>
369     <xsl:value-of select="$biblioentry.item.separator"/>
370   </fo:inline>
371 </xsl:template>
372
373 <xsl:template match="bibliomisc" mode="bibliography.mode">
374   <fo:inline>
375     <xsl:apply-templates mode="bibliography.mode"/>
376     <xsl:value-of select="$biblioentry.item.separator"/>
377   </fo:inline>
378 </xsl:template>
379
380 <xsl:template match="bibliomset" mode="bibliography.mode">
381   <fo:inline>
382     <xsl:apply-templates mode="bibliography.mode"/>
383     <xsl:value-of select="$biblioentry.item.separator"/>
384   </fo:inline>
385 </xsl:template>
386
387 <!-- ================================================== -->
388
389 <xsl:template match="biblioset" mode="bibliography.mode">
390   <fo:inline>
391     <xsl:apply-templates mode="bibliography.mode"/>
392   </fo:inline>
393 </xsl:template>
394
395 <xsl:template match="biblioset/title|biblioset/citetitle" 
396               mode="bibliography.mode">
397   <xsl:variable name="relation" select="../@relation"/>
398   <xsl:choose>
399     <xsl:when test="$relation='article' or @pubwork='article'">
400       <xsl:call-template name="gentext.startquote"/>
401       <xsl:apply-templates mode="bibliography.mode"/>
402       <xsl:call-template name="gentext.endquote"/>
403     </xsl:when>
404     <xsl:otherwise>
405       <fo:inline font-style="italic">
406         <xsl:apply-templates/>
407       </fo:inline>
408     </xsl:otherwise>
409   </xsl:choose>
410   <xsl:value-of select="$biblioentry.item.separator"/>
411 </xsl:template>
412
413 <!-- ================================================== -->
414
415 <xsl:template match="bookbiblio" mode="bibliography.mode">
416   <fo:inline>
417     <xsl:apply-templates mode="bibliography.mode"/>
418     <xsl:value-of select="$biblioentry.item.separator"/>
419   </fo:inline>
420 </xsl:template>
421
422 <xsl:template match="citetitle" mode="bibliography.mode">
423   <fo:inline>
424     <xsl:choose>
425       <xsl:when test="@pubwork = 'article'">
426         <xsl:call-template name="gentext.startquote"/>
427         <xsl:apply-templates mode="bibliography.mode"/>
428         <xsl:call-template name="gentext.endquote"/>
429       </xsl:when>
430       <xsl:otherwise>
431         <fo:inline font-style="italic">
432           <xsl:apply-templates mode="bibliography.mode"/>
433         </fo:inline>
434       </xsl:otherwise>
435     </xsl:choose>
436     <xsl:value-of select="$biblioentry.item.separator"/>
437   </fo:inline>
438 </xsl:template>
439
440 <xsl:template match="collab" mode="bibliography.mode">
441   <fo:inline>
442     <xsl:apply-templates mode="bibliography.mode"/>
443     <xsl:value-of select="$biblioentry.item.separator"/>
444   </fo:inline>
445 </xsl:template>
446
447 <xsl:template match="confgroup" mode="bibliography.mode">
448   <fo:inline>
449     <xsl:apply-templates mode="bibliography.mode"/>
450     <xsl:value-of select="$biblioentry.item.separator"/>
451   </fo:inline>
452 </xsl:template>
453
454 <xsl:template match="contractnum" mode="bibliography.mode">
455   <fo:inline>
456     <xsl:apply-templates mode="bibliography.mode"/>
457     <xsl:value-of select="$biblioentry.item.separator"/>
458   </fo:inline>
459 </xsl:template>
460
461 <xsl:template match="contractsponsor" mode="bibliography.mode">
462   <fo:inline>
463     <xsl:apply-templates mode="bibliography.mode"/>
464     <xsl:value-of select="$biblioentry.item.separator"/>
465   </fo:inline>
466 </xsl:template>
467
468 <xsl:template match="contrib" mode="bibliography.mode">
469   <fo:inline>
470     <xsl:apply-templates mode="bibliography.mode"/>
471     <xsl:value-of select="$biblioentry.item.separator"/>
472   </fo:inline>
473 </xsl:template>
474
475 <!-- ================================================== -->
476
477 <xsl:template match="copyright" mode="bibliography.mode">
478   <fo:inline>
479     <xsl:call-template name="gentext">
480       <xsl:with-param name="key" select="'Copyright'"/>
481     </xsl:call-template>
482     <xsl:call-template name="gentext.space"/>
483     <xsl:call-template name="dingbat">
484       <xsl:with-param name="dingbat">copyright</xsl:with-param>
485     </xsl:call-template>
486     <xsl:call-template name="gentext.space"/>
487     <xsl:apply-templates select="year" mode="bibliography.mode"/>
488     <xsl:if test="holder">
489       <xsl:call-template name="gentext.space"/>
490       <xsl:apply-templates select="holder" mode="bibliography.mode"/>
491     </xsl:if>
492     <xsl:value-of select="$biblioentry.item.separator"/>
493   </fo:inline>
494 </xsl:template>
495
496 <xsl:template match="year" mode="bibliography.mode">
497   <xsl:apply-templates/><xsl:text>, </xsl:text>
498 </xsl:template>
499
500 <xsl:template match="year[position()=last()]" mode="bibliography.mode">
501   <xsl:apply-templates/>
502 </xsl:template>
503
504 <xsl:template match="holder" mode="bibliography.mode">
505   <xsl:apply-templates/>
506 </xsl:template>
507
508 <!-- ================================================== -->
509
510 <xsl:template match="corpauthor" mode="bibliography.mode">
511   <fo:inline>
512     <xsl:apply-templates mode="bibliography.mode"/>
513     <xsl:value-of select="$biblioentry.item.separator"/>
514   </fo:inline>
515 </xsl:template>
516
517 <xsl:template match="corpcredit" mode="bibliography.mode">
518   <fo:inline>
519     <xsl:apply-templates mode="bibliography.mode"/>
520     <xsl:value-of select="$biblioentry.item.separator"/>
521   </fo:inline>
522 </xsl:template>
523
524 <xsl:template match="corpname" mode="bibliography.mode">
525   <fo:inline>
526     <xsl:apply-templates mode="bibliography.mode"/>
527     <xsl:value-of select="$biblioentry.item.separator"/>
528   </fo:inline>
529 </xsl:template>
530
531 <xsl:template match="date" mode="bibliography.mode">
532   <fo:inline>
533     <xsl:apply-templates mode="bibliography.mode"/>
534     <xsl:value-of select="$biblioentry.item.separator"/>
535   </fo:inline>
536 </xsl:template>
537
538 <xsl:template match="edition" mode="bibliography.mode">
539   <fo:inline>
540     <xsl:apply-templates mode="bibliography.mode"/>
541     <xsl:value-of select="$biblioentry.item.separator"/>
542   </fo:inline>
543 </xsl:template>
544
545 <xsl:template match="editor" mode="bibliography.mode">
546   <fo:inline>
547     <xsl:call-template name="person.name"/>
548     <xsl:value-of select="$biblioentry.item.separator"/>
549   </fo:inline>
550 </xsl:template>
551
552 <xsl:template match="firstname" mode="bibliography.mode">
553   <fo:inline>
554     <xsl:apply-templates mode="bibliography.mode"/>
555     <xsl:value-of select="$biblioentry.item.separator"/>
556   </fo:inline>
557 </xsl:template>
558
559 <xsl:template match="honorific" mode="bibliography.mode">
560   <fo:inline>
561     <xsl:apply-templates mode="bibliography.mode"/>
562     <xsl:value-of select="$biblioentry.item.separator"/>
563   </fo:inline>
564 </xsl:template>
565
566 <xsl:template match="indexterm" mode="bibliography.mode">
567   <xsl:apply-templates select="."/> 
568 </xsl:template>
569
570 <xsl:template match="invpartnumber" mode="bibliography.mode">
571   <fo:inline>
572     <xsl:apply-templates mode="bibliography.mode"/>
573     <xsl:value-of select="$biblioentry.item.separator"/>
574   </fo:inline>
575 </xsl:template>
576
577 <xsl:template match="isbn" mode="bibliography.mode">
578   <fo:inline>
579     <xsl:apply-templates mode="bibliography.mode"/>
580     <xsl:value-of select="$biblioentry.item.separator"/>
581   </fo:inline>
582 </xsl:template>
583
584 <xsl:template match="issn" mode="bibliography.mode">
585   <fo:inline>
586     <xsl:apply-templates mode="bibliography.mode"/>
587     <xsl:value-of select="$biblioentry.item.separator"/>
588   </fo:inline>
589 </xsl:template>
590
591 <xsl:template match="issuenum" mode="bibliography.mode">
592   <fo:inline>
593     <xsl:apply-templates mode="bibliography.mode"/>
594     <xsl:value-of select="$biblioentry.item.separator"/>
595   </fo:inline>
596 </xsl:template>
597
598 <xsl:template match="lineage" mode="bibliography.mode">
599   <fo:inline>
600     <xsl:apply-templates mode="bibliography.mode"/>
601     <xsl:value-of select="$biblioentry.item.separator"/>
602   </fo:inline>
603 </xsl:template>
604
605 <xsl:template match="orgname" mode="bibliography.mode">
606   <fo:inline>
607     <xsl:apply-templates mode="bibliography.mode"/>
608     <xsl:value-of select="$biblioentry.item.separator"/>
609   </fo:inline>
610 </xsl:template>
611
612 <xsl:template match="othercredit" mode="bibliography.mode">
613   <fo:inline>
614     <xsl:apply-templates mode="bibliography.mode"/>
615     <xsl:value-of select="$biblioentry.item.separator"/>
616   </fo:inline>
617 </xsl:template>
618
619 <xsl:template match="othername" mode="bibliography.mode">
620   <fo:inline>
621     <xsl:apply-templates mode="bibliography.mode"/>
622     <xsl:value-of select="$biblioentry.item.separator"/>
623   </fo:inline>
624 </xsl:template>
625
626 <xsl:template match="pagenums" mode="bibliography.mode">
627   <fo:inline>
628     <xsl:apply-templates mode="bibliography.mode"/>
629     <xsl:value-of select="$biblioentry.item.separator"/>
630   </fo:inline>
631 </xsl:template>
632
633 <xsl:template match="printhistory" mode="bibliography.mode">
634   <fo:inline>
635     <xsl:apply-templates mode="bibliography.mode"/>
636     <xsl:value-of select="$biblioentry.item.separator"/>
637   </fo:inline>
638 </xsl:template>
639
640 <xsl:template match="productname" mode="bibliography.mode">
641   <fo:inline>
642     <xsl:apply-templates mode="bibliography.mode"/>
643     <xsl:value-of select="$biblioentry.item.separator"/>
644   </fo:inline>
645 </xsl:template>
646
647 <xsl:template match="productnumber" mode="bibliography.mode">
648   <fo:inline>
649     <xsl:apply-templates mode="bibliography.mode"/>
650     <xsl:value-of select="$biblioentry.item.separator"/>
651   </fo:inline>
652 </xsl:template>
653
654 <xsl:template match="pubdate" mode="bibliography.mode">
655   <fo:inline>
656     <xsl:apply-templates mode="bibliography.mode"/>
657     <xsl:value-of select="$biblioentry.item.separator"/>
658   </fo:inline>
659 </xsl:template>
660
661 <xsl:template match="publisher" mode="bibliography.mode">
662   <fo:inline>
663     <xsl:apply-templates mode="bibliography.mode"/>
664   </fo:inline>
665 </xsl:template>
666
667 <xsl:template match="publishername" mode="bibliography.mode">
668   <fo:inline>
669     <xsl:apply-templates mode="bibliography.mode"/>
670     <xsl:value-of select="$biblioentry.item.separator"/>
671   </fo:inline>
672 </xsl:template>
673
674 <xsl:template match="pubsnumber" mode="bibliography.mode">
675   <fo:inline>
676     <xsl:apply-templates mode="bibliography.mode"/>
677     <xsl:value-of select="$biblioentry.item.separator"/>
678   </fo:inline>
679 </xsl:template>
680
681 <xsl:template match="releaseinfo" mode="bibliography.mode">
682   <fo:inline>
683     <xsl:apply-templates mode="bibliography.mode"/>
684     <xsl:value-of select="$biblioentry.item.separator"/>
685   </fo:inline>
686 </xsl:template>
687
688 <xsl:template match="revhistory" mode="bibliography.mode">
689   <fo:block>
690     <xsl:apply-templates select="."/> <!-- use normal mode -->
691   </fo:block>
692 </xsl:template>
693
694 <xsl:template match="seriesinfo" mode="bibliography.mode">
695   <fo:inline>
696     <xsl:apply-templates mode="bibliography.mode"/>
697   </fo:inline>
698 </xsl:template>
699
700 <xsl:template match="seriesvolnums" mode="bibliography.mode">
701   <fo:inline>
702     <xsl:apply-templates mode="bibliography.mode"/>
703     <xsl:value-of select="$biblioentry.item.separator"/>
704   </fo:inline>
705 </xsl:template>
706
707 <xsl:template match="subtitle" mode="bibliography.mode">
708   <fo:inline>
709     <xsl:apply-templates mode="bibliography.mode"/>
710     <xsl:value-of select="$biblioentry.item.separator"/>
711   </fo:inline>
712 </xsl:template>
713
714 <xsl:template match="surname" mode="bibliography.mode">
715   <fo:inline>
716     <xsl:apply-templates mode="bibliography.mode"/>
717     <xsl:value-of select="$biblioentry.item.separator"/>
718   </fo:inline>
719 </xsl:template>
720
721 <xsl:template match="title" mode="bibliography.mode">
722   <fo:inline>
723     <fo:inline font-style="italic">
724       <xsl:apply-templates mode="bibliography.mode"/>
725     </fo:inline>
726     <xsl:value-of select="$biblioentry.item.separator"/>
727   </fo:inline>
728 </xsl:template>
729
730 <xsl:template match="titleabbrev" mode="bibliography.mode">
731   <fo:inline>
732     <xsl:apply-templates mode="bibliography.mode"/>
733     <xsl:value-of select="$biblioentry.item.separator"/>
734   </fo:inline>
735 </xsl:template>
736
737 <xsl:template match="volumenum" mode="bibliography.mode">
738   <fo:inline>
739     <xsl:apply-templates mode="bibliography.mode"/>
740     <xsl:value-of select="$biblioentry.item.separator"/>
741   </fo:inline>
742 </xsl:template>
743
744 <xsl:template match="orgdiv" mode="bibliography.mode">
745   <fo:inline>
746     <xsl:apply-templates mode="bibliography.mode"/>
747     <xsl:value-of select="$biblioentry.item.separator"/>
748   </fo:inline>
749 </xsl:template>
750
751 <xsl:template match="collabname" mode="bibliography.mode">
752   <fo:inline>
753     <xsl:apply-templates mode="bibliography.mode"/>
754     <xsl:value-of select="$biblioentry.item.separator"/>
755   </fo:inline>
756 </xsl:template>
757
758 <xsl:template match="confdates" mode="bibliography.mode">
759   <fo:inline>
760     <xsl:apply-templates mode="bibliography.mode"/>
761     <xsl:value-of select="$biblioentry.item.separator"/>
762   </fo:inline>
763 </xsl:template>
764
765 <xsl:template match="conftitle" mode="bibliography.mode">
766   <fo:inline>
767     <xsl:apply-templates mode="bibliography.mode"/>
768     <xsl:value-of select="$biblioentry.item.separator"/>
769   </fo:inline>
770 </xsl:template>
771
772 <xsl:template match="confnum" mode="bibliography.mode">
773   <fo:inline>
774     <xsl:apply-templates mode="bibliography.mode"/>
775     <xsl:value-of select="$biblioentry.item.separator"/>
776   </fo:inline>
777 </xsl:template>
778
779 <xsl:template match="confsponsor" mode="bibliography.mode">
780   <fo:inline>
781     <xsl:apply-templates mode="bibliography.mode"/>
782     <xsl:value-of select="$biblioentry.item.separator"/>
783   </fo:inline>
784 </xsl:template>
785
786 <xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
787               mode="bibliography.mode">
788   <fo:inline>
789     <xsl:apply-templates mode="bibliography.mode"/>
790     <xsl:value-of select="$biblioentry.item.separator"/>
791   </fo:inline>
792 </xsl:template>
793
794 <!-- ==================================================================== -->
795
796 <xsl:template match="*" mode="bibliomixed.mode">
797   <xsl:apply-templates select="."/><!-- try the default mode -->
798 </xsl:template>
799
800 <xsl:template match="abbrev" mode="bibliomixed.mode">
801   <xsl:if test="preceding-sibling::*">
802     <fo:inline>
803       <xsl:apply-templates mode="bibliomixed.mode"/>
804     </fo:inline>
805   </xsl:if>
806 </xsl:template>
807
808 <xsl:template match="abstract" mode="bibliomixed.mode">
809   <fo:block start-indent="1in">
810     <xsl:apply-templates mode="bibliomixed.mode"/>
811   </fo:block>
812 </xsl:template>
813
814 <xsl:template match="para" mode="bibliomixed.mode">
815   <fo:block>
816     <xsl:apply-templates mode="bibliomixed.mode"/>
817   </fo:block>
818 </xsl:template>
819
820 <xsl:template match="address" mode="bibliomixed.mode">
821   <fo:inline>
822     <xsl:apply-templates mode="bibliomixed.mode"/>
823   </fo:inline>
824 </xsl:template>
825
826 <xsl:template match="affiliation" mode="bibliomixed.mode">
827   <fo:inline>
828     <xsl:apply-templates mode="bibliomixed.mode"/>
829   </fo:inline>
830 </xsl:template>
831
832 <xsl:template match="shortaffil" mode="bibliomixed.mode">
833   <fo:inline>
834     <xsl:apply-templates mode="bibliography.mode"/>
835   </fo:inline>
836 </xsl:template>
837
838 <xsl:template match="jobtitle" mode="bibliomixed.mode">
839   <fo:inline>
840     <xsl:apply-templates mode="bibliography.mode"/>
841   </fo:inline>
842 </xsl:template>
843
844 <xsl:template match="artpagenums" mode="bibliomixed.mode">
845   <fo:inline>
846     <xsl:apply-templates mode="bibliomixed.mode"/>
847   </fo:inline>
848 </xsl:template>
849
850 <xsl:template match="author" mode="bibliomixed.mode">
851   <fo:inline>
852     <xsl:call-template name="person.name"/>
853   </fo:inline>
854 </xsl:template>
855
856 <xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode">
857   <fo:inline>
858     <xsl:apply-templates mode="bibliomixed.mode"/>
859   </fo:inline>
860 </xsl:template>
861
862 <xsl:template match="authorgroup" mode="bibliomixed.mode">
863   <fo:inline>
864     <xsl:apply-templates mode="bibliomixed.mode"/>
865   </fo:inline>
866 </xsl:template>
867
868 <xsl:template match="authorinitials" mode="bibliomixed.mode">
869   <fo:inline>
870     <xsl:apply-templates mode="bibliomixed.mode"/>
871   </fo:inline>
872 </xsl:template>
873
874 <xsl:template match="bibliomisc" mode="bibliomixed.mode">
875   <fo:inline>
876     <xsl:apply-templates mode="bibliomixed.mode"/>
877   </fo:inline>
878 </xsl:template>
879
880 <!-- ================================================== -->
881
882 <xsl:template match="bibliomset" mode="bibliomixed.mode">
883   <fo:inline>
884     <xsl:apply-templates mode="bibliomixed.mode"/>
885   </fo:inline>
886 </xsl:template>
887
888 <xsl:template match="bibliomset/title|bibliomset/citetitle" 
889               mode="bibliomixed.mode">
890   <xsl:variable name="relation" select="../@relation"/>
891   <xsl:choose>
892     <xsl:when test="$relation='article' or @pubwork='article'">
893       <xsl:call-template name="gentext.startquote"/>
894       <xsl:apply-templates mode="bibliomixed.mode"/>
895       <xsl:call-template name="gentext.endquote"/>
896     </xsl:when>
897     <xsl:otherwise>
898       <fo:inline font-style="italic">
899         <xsl:apply-templates/>
900       </fo:inline>
901     </xsl:otherwise>
902   </xsl:choose>
903 </xsl:template>
904
905 <!-- ================================================== -->
906
907 <xsl:template match="biblioset" mode="bibliomixed.mode">
908   <fo:inline>
909     <xsl:apply-templates mode="bibliomixed.mode"/>
910   </fo:inline>
911 </xsl:template>
912
913 <xsl:template match="citetitle" mode="bibliomixed.mode">
914   <xsl:choose>
915     <xsl:when test="@pubwork = 'article'">
916       <xsl:call-template name="gentext.startquote"/>
917       <xsl:apply-templates mode="bibliomixed.mode"/>
918       <xsl:call-template name="gentext.endquote"/>
919     </xsl:when>
920     <xsl:otherwise>
921       <fo:inline font-style="italic">
922         <xsl:apply-templates mode="bibliography.mode"/>
923       </fo:inline>
924     </xsl:otherwise>
925   </xsl:choose>
926 </xsl:template>
927
928 <xsl:template match="collab" mode="bibliomixed.mode">
929   <fo:inline>
930     <xsl:apply-templates mode="bibliomixed.mode"/>
931   </fo:inline>
932 </xsl:template>
933
934 <xsl:template match="confgroup" mode="bibliomixed.mode">
935   <fo:inline>
936     <xsl:apply-templates mode="bibliomixed.mode"/>
937   </fo:inline>
938 </xsl:template>
939
940 <xsl:template match="contractnum" mode="bibliomixed.mode">
941   <fo:inline>
942     <xsl:apply-templates mode="bibliomixed.mode"/>
943   </fo:inline>
944 </xsl:template>
945
946 <xsl:template match="contractsponsor" mode="bibliomixed.mode">
947   <fo:inline>
948     <xsl:apply-templates mode="bibliomixed.mode"/>
949   </fo:inline>
950 </xsl:template>
951
952 <xsl:template match="contrib" mode="bibliomixed.mode">
953   <fo:inline>
954     <xsl:apply-templates mode="bibliomixed.mode"/>
955   </fo:inline>
956 </xsl:template>
957
958 <xsl:template match="copyright" mode="bibliomixed.mode">
959   <fo:inline>
960     <xsl:apply-templates mode="bibliomixed.mode"/>
961   </fo:inline>
962 </xsl:template>
963
964 <xsl:template match="corpauthor" mode="bibliomixed.mode">
965   <fo:inline>
966     <xsl:apply-templates mode="bibliomixed.mode"/>
967   </fo:inline>
968 </xsl:template>
969
970 <xsl:template match="corpcredit" mode="bibliomixed.mode">
971   <fo:inline>
972     <xsl:apply-templates mode="bibliomixed.mode"/>
973   </fo:inline>
974 </xsl:template>
975
976 <xsl:template match="corpname" mode="bibliomixed.mode">
977   <fo:inline>
978     <xsl:apply-templates mode="bibliomixed.mode"/>
979   </fo:inline>
980 </xsl:template>
981
982 <xsl:template match="date" mode="bibliomixed.mode">
983   <fo:inline>
984     <xsl:apply-templates mode="bibliomixed.mode"/>
985   </fo:inline>
986 </xsl:template>
987
988 <xsl:template match="edition" mode="bibliomixed.mode">
989   <fo:inline>
990     <xsl:apply-templates mode="bibliomixed.mode"/>
991   </fo:inline>
992 </xsl:template>
993
994 <xsl:template match="editor" mode="bibliomixed.mode">
995   <fo:inline>
996     <xsl:apply-templates mode="bibliomixed.mode"/>
997   </fo:inline>
998 </xsl:template>
999
1000 <xsl:template match="firstname" mode="bibliomixed.mode">
1001   <fo:inline>
1002     <xsl:apply-templates mode="bibliomixed.mode"/>
1003   </fo:inline>
1004 </xsl:template>
1005
1006 <xsl:template match="honorific" mode="bibliomixed.mode">
1007   <fo:inline>
1008     <xsl:apply-templates mode="bibliomixed.mode"/>
1009   </fo:inline>
1010 </xsl:template>
1011
1012 <xsl:template match="indexterm" mode="bibliomixed.mode">
1013   <xsl:apply-templates select="."/> 
1014 </xsl:template>
1015
1016 <xsl:template match="invpartnumber" mode="bibliomixed.mode">
1017   <fo:inline>
1018     <xsl:apply-templates mode="bibliomixed.mode"/>
1019   </fo:inline>
1020 </xsl:template>
1021
1022 <xsl:template match="isbn" mode="bibliomixed.mode">
1023   <fo:inline>
1024     <xsl:apply-templates mode="bibliomixed.mode"/>
1025   </fo:inline>
1026 </xsl:template>
1027
1028 <xsl:template match="issn" mode="bibliomixed.mode">
1029   <fo:inline>
1030     <xsl:apply-templates mode="bibliomixed.mode"/>
1031   </fo:inline>
1032 </xsl:template>
1033
1034 <xsl:template match="issuenum" mode="bibliomixed.mode">
1035   <fo:inline>
1036     <xsl:apply-templates mode="bibliomixed.mode"/>
1037   </fo:inline>
1038 </xsl:template>
1039
1040 <xsl:template match="lineage" mode="bibliomixed.mode">
1041   <fo:inline>
1042     <xsl:apply-templates mode="bibliomixed.mode"/>
1043   </fo:inline>
1044 </xsl:template>
1045
1046 <xsl:template match="orgname" mode="bibliomixed.mode">
1047   <fo:inline>
1048     <xsl:apply-templates mode="bibliomixed.mode"/>
1049   </fo:inline>
1050 </xsl:template>
1051
1052 <xsl:template match="othercredit" mode="bibliomixed.mode">
1053   <fo:inline>
1054     <xsl:apply-templates mode="bibliomixed.mode"/>
1055   </fo:inline>
1056 </xsl:template>
1057
1058 <xsl:template match="othername" mode="bibliomixed.mode">
1059   <fo:inline>
1060     <xsl:apply-templates mode="bibliomixed.mode"/>
1061   </fo:inline>
1062 </xsl:template>
1063
1064 <xsl:template match="pagenums" mode="bibliomixed.mode">
1065   <fo:inline>
1066     <xsl:apply-templates mode="bibliomixed.mode"/>
1067   </fo:inline>
1068 </xsl:template>
1069
1070 <xsl:template match="printhistory" mode="bibliomixed.mode">
1071   <fo:inline>
1072     <xsl:apply-templates mode="bibliomixed.mode"/>
1073   </fo:inline>
1074 </xsl:template>
1075
1076 <xsl:template match="productname" mode="bibliomixed.mode">
1077   <fo:inline>
1078     <xsl:apply-templates mode="bibliomixed.mode"/>
1079   </fo:inline>
1080 </xsl:template>
1081
1082 <xsl:template match="productnumber" mode="bibliomixed.mode">
1083   <fo:inline>
1084     <xsl:apply-templates mode="bibliomixed.mode"/>
1085   </fo:inline>
1086 </xsl:template>
1087
1088 <xsl:template match="pubdate" mode="bibliomixed.mode">
1089   <fo:inline>
1090     <xsl:apply-templates mode="bibliomixed.mode"/>
1091   </fo:inline>
1092 </xsl:template>
1093
1094 <xsl:template match="publisher" mode="bibliomixed.mode">
1095   <fo:inline>
1096     <xsl:apply-templates mode="bibliomixed.mode"/>
1097   </fo:inline>
1098 </xsl:template>
1099
1100 <xsl:template match="publishername" mode="bibliomixed.mode">
1101   <fo:inline>
1102     <xsl:apply-templates mode="bibliomixed.mode"/>
1103   </fo:inline>
1104 </xsl:template>
1105
1106 <xsl:template match="pubsnumber" mode="bibliomixed.mode">
1107   <fo:inline>
1108     <xsl:apply-templates mode="bibliomixed.mode"/>
1109   </fo:inline>
1110 </xsl:template>
1111
1112 <xsl:template match="releaseinfo" mode="bibliomixed.mode">
1113   <fo:inline>
1114     <xsl:apply-templates mode="bibliomixed.mode"/>
1115   </fo:inline>
1116 </xsl:template>
1117
1118 <xsl:template match="revhistory" mode="bibliomixed.mode">
1119   <fo:inline>
1120     <xsl:apply-templates mode="bibliomixed.mode"/>
1121   </fo:inline>
1122 </xsl:template>
1123
1124 <xsl:template match="seriesvolnums" mode="bibliomixed.mode">
1125   <fo:inline>
1126     <xsl:apply-templates mode="bibliomixed.mode"/>
1127   </fo:inline>
1128 </xsl:template>
1129
1130 <xsl:template match="subtitle" mode="bibliomixed.mode">
1131   <fo:inline>
1132     <xsl:apply-templates mode="bibliomixed.mode"/>
1133   </fo:inline>
1134 </xsl:template>
1135
1136 <xsl:template match="surname" mode="bibliomixed.mode">
1137   <fo:inline>
1138     <xsl:apply-templates mode="bibliomixed.mode"/>
1139   </fo:inline>
1140 </xsl:template>
1141
1142 <xsl:template match="title" mode="bibliomixed.mode">
1143   <fo:inline>
1144     <xsl:apply-templates mode="bibliomixed.mode"/>
1145   </fo:inline>
1146 </xsl:template>
1147
1148 <xsl:template match="titleabbrev" mode="bibliomixed.mode">
1149   <fo:inline>
1150     <xsl:apply-templates mode="bibliomixed.mode"/>
1151   </fo:inline>
1152 </xsl:template>
1153
1154 <xsl:template match="volumenum" mode="bibliomixed.mode">
1155   <fo:inline>
1156     <xsl:apply-templates mode="bibliomixed.mode"/>
1157   </fo:inline>
1158 </xsl:template>
1159
1160 <xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource"
1161               mode="bibliomixed.mode">
1162   <fo:inline>
1163     <xsl:apply-templates mode="bibliomixed.mode"/>
1164   </fo:inline>
1165 </xsl:template>
1166
1167 <!-- ==================================================================== -->
1168
1169 </xsl:stylesheet>