o Made several changes in response to suggestions in Wiki.
[project-aon.git] / xml / pml.xsl
1 <?xml version="1.0"?>
2 <!DOCTYPE xsl:transform [
3  <!ENTITY % pml.characters SYSTEM "pmlchar.mod">
4  %pml.characters;
5 ]>
6
7 <!--
8
9 $Id$
10
11 $Log$
12 Revision 1.2  2005/04/09 19:51:50  angantyr
13 Added handling of open-ended quotes.
14
15 Revision 1.1  2005/01/30 01:32:52  jonathan.blake
16 Initial freepository revision of XML support documents.
17
18 Revision 1.2  2003/01/07 16:55:28  jblake
19 Restarted work from base xhtml.xsl.
20
21
22 -->
23
24 <xsl:transform version="1.0"
25   xmlns="http://www.w3.org/1999/xhtml"
26   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
27   xmlns:lxslt="http://xml.apache.org/xslt">
28
29 <xsl:output method="text" encoding="ISO-8859-1" />
30
31 <xsl:strip-space elements="gamebook section meta data ol ul dl li dd footnotes footnote illustration instance" />
32 <xsl:preserve-space elements="p choice" />
33
34 <!-- ====================== parameters ========================== -->
35
36 <xsl:param name="use-illustrators" />
37
38 <!-- ======================= variables ========================== -->
39
40 <xsl:variable name="newline">
41 <xsl:text>
42 </xsl:text>
43 </xsl:variable>
44
45 <xsl:variable name="newparagraph">
46  <xsl:value-of select="$newline" />
47  <xsl:value-of select="$newline" />
48 </xsl:variable>
49
50 <xsl:variable name="newpage">
51  <xsl:value-of select="$newline" />
52  <xsl:text>\p</xsl:text>
53 </xsl:variable>
54
55 <!-- ======================== Templates ========================= -->
56
57 <!-- ================= hierarchical sections ==================== -->
58
59 <xsl:template match="meta" />
60
61 <!-- ::::::::::::::::::: top-level section :::::::::::::::::::::: -->
62
63 <xsl:template match="/gamebook/section[@id='title']">
64  <xsl:text>\vTITLE="</xsl:text><xsl:value-of select="/gamebook/meta/title" /><xsl:text>"\v</xsl:text>
65  <xsl:value-of select="$newline" />
66  <xsl:value-of select="$newline" />
67
68  <xsl:text>\X0\l\B</xsl:text>
69   <xsl:text>\c</xsl:text>
70    <xsl:value-of select="/gamebook/meta/title" />
71    <xsl:value-of select="$newline" />
72   <xsl:text>\c</xsl:text>
73  <xsl:text>\B\l\X0</xsl:text>
74  <xsl:value-of select="$newparagraph" />
75
76  <xsl:text>\c</xsl:text>
77   <xsl:apply-templates select="/gamebook/meta/creator[@class='medium']" />
78   <xsl:value-of select="$newline" />
79  <xsl:text>\c</xsl:text>
80
81  <xsl:value-of select="$newpage" />
82  
83  <xsl:apply-templates select="/gamebook/meta/rights[@class='license-notification']" />
84
85  <xsl:value-of select="$newparagraph" />
86  <xsl:text>Publication Date: </xsl:text>
87  <xsl:value-of select="/gamebook/meta/date[@class='publication']/day" />
88  <xsl:text> </xsl:text>
89  <xsl:choose>
90   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 1">
91    <xsl:text>January</xsl:text>
92   </xsl:when>
93   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 2">
94    <xsl:text>February</xsl:text>
95   </xsl:when>
96   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 3">
97    <xsl:text>March</xsl:text>
98   </xsl:when>
99   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 4">
100    <xsl:text>April</xsl:text>
101   </xsl:when>
102   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 5">
103    <xsl:text>May</xsl:text>
104   </xsl:when>
105   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 6">
106    <xsl:text>June</xsl:text>
107   </xsl:when>
108   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 7">
109    <xsl:text>July</xsl:text>
110   </xsl:when>
111   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 8">
112    <xsl:text>August</xsl:text>
113   </xsl:when>
114   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 9">
115    <xsl:text>September</xsl:text>
116   </xsl:when>
117   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 10">
118    <xsl:text>October</xsl:text>
119   </xsl:when>
120   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 11">
121    <xsl:text>November</xsl:text>
122   </xsl:when>
123   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 12">
124    <xsl:text>December</xsl:text>
125   </xsl:when>
126   <xsl:otherwise>
127    <xsl:text>Invalid Month</xsl:text>
128   </xsl:otherwise>
129  </xsl:choose>
130  <xsl:text> </xsl:text>
131
132  <xsl:value-of select="/gamebook/meta/date[@class='publication']/year" />
133
134  <xsl:value-of select="$newparagraph" />
135  <xsl:apply-templates select="/gamebook/meta/description[@class='publication']" />
136
137  <xsl:if test="data/section[@class='frontmatter']">
138   <xsl:apply-templates select="data/section[@class='frontmatter']" />
139  </xsl:if>
140
141  <xsl:if test="data/section[@class='mainmatter']">
142   <xsl:apply-templates select="data/section[@class='mainmatter']" />
143  </xsl:if>
144
145  <xsl:if test="data/section[@class='numbered']">
146   <xsl:apply-templates select="data/section[@class='numbered']" />
147  </xsl:if>
148
149  <xsl:if test="data/section[@class='backmatter']">
150   <xsl:apply-templates select="data/section[@class='backmatter']" />
151  </xsl:if>
152
153  <xsl:for-each select="//footnote">
154   <xsl:value-of select="$newparagraph" />
155   <xsl:text>&lt;footnote id="</xsl:text><xsl:value-of select="@id" /><xsl:text>"&gt;</xsl:text>
156    <xsl:text>[</xsl:text><xsl:number count="footnote" from="/" level="any" format="1" /><xsl:text>]</xsl:text>
157    <xsl:apply-templates />
158   <xsl:text>&lt;/footnote&gt;</xsl:text>
159  </xsl:for-each>
160
161 </xsl:template>
162
163 <xsl:template match="/gamebook/section[@id='toc']" />
164
165 <xsl:template match="section" />
166
167 <!-- ::::::::::: second-level frontmatter sections :::::::::::::: -->
168
169 <xsl:template match="/gamebook/section/data/section[@class='frontmatter']">
170  <xsl:value-of select="$newpage" />
171
172  <xsl:text>\X1\l\B\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
173   <xsl:value-of select="meta/title" />
174  <xsl:text>\B\l\X1</xsl:text>
175  <xsl:value-of select="$newparagraph" />
176
177  <xsl:apply-templates />
178 </xsl:template>
179
180 <!-- :::::::::::: third-level front matter sections ::::::::::::: -->
181
182 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter-separate']">
183  <xsl:value-of select="$newpage" />
184  <xsl:text>\X2\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
185   <xsl:value-of select="meta/title" />
186  <xsl:text>\l\X2</xsl:text>
187  <xsl:value-of select="$newparagraph" />
188
189  <xsl:apply-templates />
190 </xsl:template>
191
192 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter']">
193  <xsl:text>\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
194   <xsl:value-of select="meta/title" />
195  <xsl:text>\l</xsl:text>
196  <xsl:value-of select="$newparagraph" />
197
198  <xsl:apply-templates />
199  <xsl:if test="following-sibling::node( )">
200   <xsl:value-of select="$newparagraph" />
201  </xsl:if>
202 </xsl:template>
203
204 <!-- :::::::::::: fourth-level front matter sections :::::::::::: -->
205
206 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='frontmatter']">
207  <xsl:text>\B\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
208   <xsl:value-of select="meta/title" />
209  <xsl:text>\B</xsl:text>
210  <xsl:value-of select="$newparagraph" />
211
212  <xsl:apply-templates />
213  <xsl:if test="following-sibling::node( )">
214   <xsl:value-of select="$newparagraph" />
215  </xsl:if>
216 </xsl:template>
217
218 <!-- ::::::::::::: fifth-level front matter sections :::::::::::: -->
219
220 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='frontmatter']">
221  <xsl:text>\Q{</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
222  <xsl:value-of select="meta/title" />
223  <xsl:value-of select="$newparagraph" />
224
225  <xsl:apply-templates />
226  <xsl:if test="following-sibling::node( )">
227   <xsl:value-of select="$newparagraph" />
228  </xsl:if>
229 </xsl:template>
230
231 <!-- ::::::::::: second-level main matter sections :::::::::::::: -->
232
233 <xsl:template match="/gamebook/section/data/section[@class='mainmatter']">
234  <xsl:value-of select="$newpage" />
235  <xsl:text>\X1\l\B\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
236   <xsl:value-of select="meta/title" />
237  <xsl:text>\B\l\X1</xsl:text>
238  <xsl:value-of select="$newparagraph" />
239
240  <xsl:apply-templates />
241 </xsl:template>
242
243 <!-- :::::::::::: third-level main matter sections ::::::::::::: -->
244
245 <xsl:template match="/gamebook/section/data/section/data/section[@class='mainmatter-separate']">
246  <xsl:value-of select="$newpage" />
247  <xsl:text>\X2\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
248   <xsl:value-of select="meta/title" />
249  <xsl:text>\l\X2</xsl:text>
250  <xsl:value-of select="$newparagraph" />
251
252  <xsl:apply-templates />
253 </xsl:template>
254
255 <xsl:template match="/gamebook/section/data/section/data/section[@class='mainmatter']">
256  <xsl:text>\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
257   <xsl:value-of select="meta/title" />
258  <xsl:text>\l</xsl:text>
259  <xsl:value-of select="$newparagraph" />
260
261  <xsl:apply-templates />
262  <xsl:if test="following-sibling::node( )">
263   <xsl:value-of select="$newparagraph" />
264  </xsl:if>
265 </xsl:template>
266
267 <!-- :::::::::::: fourth-level main matter sections :::::::::::: -->
268
269 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='mainmatter-separate']">
270  <xsl:text>\B\Q="</xsl:text><xsl:value-of select="@id" />><xsl:text>"</xsl:text>
271   <xsl:value-of select="meta/title" />
272  <xsl:text>\B</xsl:text>
273  <xsl:value-of select="$newparagraph" />
274
275  <xsl:apply-templates />
276  <xsl:if test="following-sibling::node( )">
277   <xsl:value-of select="$newparagraph" />
278  </xsl:if>
279 </xsl:template>
280
281 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='mainmatter']">
282  <xsl:text>\B\Q="</xsl:text><xsl:value-of select="@id" />><xsl:text>"</xsl:text>
283   <xsl:value-of select="meta/title" />
284  <xsl:text>\B</xsl:text>
285  <xsl:value-of select="$newparagraph" />
286
287  <xsl:apply-templates />
288  <xsl:if test="following-sibling::node( )">
289   <xsl:value-of select="$newparagraph" />
290  </xsl:if>
291 </xsl:template>
292
293 <!-- ::::::::::::: fifth-level main matter sections :::::::::::: -->
294
295 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='mainmatter']">
296  <xsl:text>\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
297  <xsl:value-of select="meta/title" />
298  <xsl:value-of select="$newparagraph" />
299
300  <xsl:apply-templates />
301  <xsl:if test="following-sibling::node( )">
302   <xsl:value-of select="$newparagraph" />
303  </xsl:if>
304 </xsl:template>
305
306 <!-- :::::::::::: third-level glossary sections ::::::::::::: -->
307 <!-- Glossary sections should be contained in a second level section. -->
308
309 <xsl:template match="/gamebook/section/data/section/data/section[@class='glossary-separate']">
310  <xsl:value-of select="$newpage" />
311  <xsl:text>\X2\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
312   <xsl:value-of select="meta/title" />
313  <xsl:text>\l\X2</xsl:text>
314  <xsl:value-of select="$newparagraph" />
315
316  <xsl:apply-templates />
317 </xsl:template>
318
319 <xsl:template match="/gamebook/section/data/section/data/section[@class='glossary']">
320  <xsl:text>\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
321   <xsl:value-of select="meta/title" />
322  <xsl:text>\l</xsl:text>
323  <xsl:value-of select="$newparagraph" />
324
325  <xsl:apply-templates />
326  <xsl:if test="following-sibling::node( )">
327   <xsl:value-of select="$newparagraph" />
328  </xsl:if>
329 </xsl:template>
330
331 <!-- :::::::::::::::::: numbered sections ::::::::::::::::::::::: -->
332
333 <xsl:template match="/gamebook/section/data/section[@class='numbered']">
334  <xsl:value-of select="$newpage" />
335  <xsl:text>\X1\l\B\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
336   <xsl:value-of select="meta/title" />
337  <xsl:text>\B\l\X1</xsl:text>
338  <xsl:value-of select="$newparagraph" />
339
340  <xsl:apply-templates />
341 </xsl:template>
342
343 <xsl:template match="/gamebook/section/data/section[@class='numbered']/data/section[@class='numbered']">
344  <xsl:value-of select="$newpage" />
345  <xsl:text>\c\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
346   <xsl:value-of select="meta/title" />
347  <xsl:text>\l</xsl:text>
348  <xsl:value-of select="$newline" />
349  <xsl:text>\c</xsl:text><xsl:value-of select="$newline" />
350
351  <xsl:apply-templates />
352  <xsl:value-of select="$newparagraph" />
353  <xsl:text>\w="50%"</xsl:text>
354 </xsl:template>
355
356 <!-- :::::::::::: second-level backmatter sections :::::::::::::: -->
357
358 <xsl:template match="/gamebook/section/data/section[@class='backmatter']">
359  <xsl:value-of select="$newpage" />
360  <xsl:text>\X1\l\B\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
361   <xsl:value-of select="meta/title" />
362  <xsl:text>\B\l\X1</xsl:text>
363  <xsl:value-of select="$newparagraph" />
364
365  <xsl:apply-templates />
366 </xsl:template>
367
368 <!-- ::::::::::::: third-level back matter sections ::::::::::::: -->
369
370 <xsl:template match="/gamebook/section/data/section/data/section[@class='backmatter']">
371  <xsl:text>\l\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
372   <xsl:value-of select="meta/title" />
373  <xsl:text>\l</xsl:text>
374  <xsl:value-of select="$newparagraph" />
375
376  <xsl:apply-templates />
377  <xsl:if test="following-sibling::node( )">
378   <xsl:value-of select="$newparagraph" />
379  </xsl:if>
380 </xsl:template>
381
382 <!-- ::::::::::::: fourth-level back matter sections ::::::::::::: -->
383
384 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='backmatter']">
385  <xsl:text>\B\Q="</xsl:text><xsl:value-of select="@id" />><xsl:text>"</xsl:text>
386   <xsl:value-of select="meta/title" />
387  <xsl:text>\B</xsl:text>
388  <xsl:value-of select="$newparagraph" />
389
390  <xsl:apply-templates />
391  <xsl:if test="following-sibling::node( )">
392   <xsl:value-of select="$newparagraph" />
393  </xsl:if>
394 </xsl:template>
395
396 <!-- :::::::::::::::::: dedication template ::::::::::::::::::::: -->
397
398 <xsl:template match="id( 'dedicate' )">
399  <!-- PML doesn't allow blank lines at the top of a page without a space -->
400  <xsl:value-of select="$newpage" />
401  <xsl:text>&nbsp;</xsl:text><xsl:value-of select="$newparagraph" />
402  <xsl:text>&nbsp;</xsl:text><xsl:value-of select="$newparagraph" />
403  <xsl:text>\c\i</xsl:text>
404   <xsl:apply-templates select="data/p" />
405  <xsl:text>\i</xsl:text>
406  <xsl:value-of select="$newline" />
407  <xsl:text>\c</xsl:text>
408  <xsl:value-of select="$newline" />
409 </xsl:template>
410
411 <!-- ==================== block elements ======================== -->
412
413 <xsl:template match="p">
414  <xsl:apply-templates />
415  <xsl:if test="following-sibling::node( )">
416   <xsl:value-of select="$newparagraph" />
417  </xsl:if>
418 </xsl:template>
419
420 <xsl:template match="dd/p | li/p">
421  <xsl:apply-templates />
422  <xsl:if test="following-sibling::node( )">
423   <xsl:choose>
424    <xsl:when test="following-sibling::illustration">
425     <xsl:if test="following-sibling::illustration/instance[@class='text']">
426      <xsl:value-of select="$newparagraph" />
427     </xsl:if>
428    </xsl:when>
429    <xsl:otherwise>
430     <xsl:value-of select="$newparagraph" />
431    </xsl:otherwise>
432   </xsl:choose>
433  </xsl:if>
434 </xsl:template>
435
436 <xsl:template match="ul | ol | dl">
437  <xsl:apply-templates />
438  <xsl:if test="following-sibling::node( )">
439   <xsl:value-of select="$newparagraph" />
440  </xsl:if>
441 </xsl:template>
442
443 <xsl:template match="li/ul | li/ol | li/dl | dd/ul | dd/ol | dd/dl">
444  <xsl:apply-templates />
445  <xsl:if test="following-sibling::node( )">
446   <xsl:value-of select="$newparagraph" />
447  </xsl:if>
448 </xsl:template>
449
450 <xsl:template match="table">
451  <xsl:apply-templates />
452  <xsl:if test="following-sibling::node( )">
453   <xsl:value-of select="$newparagraph" />
454  </xsl:if>
455 </xsl:template>
456
457 <xsl:template match="tr">
458  <xsl:apply-templates />
459  <xsl:if test="following-sibling::node( )">
460   <xsl:value-of select="$newline" />
461  </xsl:if>
462 </xsl:template>
463
464 <xsl:template match="th">
465  <xsl:variable name="indent-level" select="count( th | td )" />
466  <xsl:choose>
467   <xsl:when test="$indent-level = 2"><xsl:text>\T="33%"</xsl:text></xsl:when>
468   <xsl:when test="$indent-level = 3"><xsl:text>\T="66%"</xsl:text></xsl:when>
469  </xsl:choose>
470  <xsl:text>\B</xsl:text><xsl:apply-templates /><xsl:text>\B</xsl:text>
471 </xsl:template>
472
473 <xsl:template match="td">
474  <xsl:variable name="indent-level" select="count( th | td )" />
475  <xsl:choose>
476   <xsl:when test="$indent-level = 2"><xsl:text>\T="33%"</xsl:text></xsl:when>
477   <xsl:when test="$indent-level = 3"><xsl:text>\T="66%"</xsl:text></xsl:when>
478  </xsl:choose>
479  <xsl:apply-templates />
480 </xsl:template>
481
482 <xsl:template match="combat">
483  <xsl:text>\t</xsl:text>
484  <xsl:apply-templates select="enemy" />
485  <xsl:text>:</xsl:text>
486  <xsl:text>\t</xsl:text>
487
488  <xsl:value-of select="$newline" />
489  <xsl:text>\t&nbsp;&nbsp;</xsl:text>
490  <xsl:choose>
491   <xsl:when test="enemy-attribute[@class='combatskill']">
492    <xsl:text>COMBAT&nbsp;SKILL&nbsp;</xsl:text>
493    <xsl:value-of select="enemy-attribute[@class='combatskill']" />
494   </xsl:when>
495   <xsl:when test="enemy-attribute[@class='closecombatskill']">
496    <xsl:text>CLOSE&nbsp;COMBAT&nbsp;SKILL&nbsp;</xsl:text>
497    <xsl:value-of select="enemy-attribute[@class='closecombatskill']" />
498   </xsl:when>
499  </xsl:choose>
500  <xsl:text>\t</xsl:text>
501
502  <xsl:value-of select="$newline" />
503  <xsl:text>\t&nbsp;&nbsp;</xsl:text>
504  <xsl:text>ENDURANCE&nbsp;</xsl:text>
505  <xsl:choose>
506   <xsl:when test="enemy-attribute[@class='target']">
507    <xsl:text>(TARGET&nbsp;points)&nbsp;</xsl:text>
508    <xsl:value-of select="enemy-attribute[@class='target']" />
509   </xsl:when>
510   <xsl:when test="enemy-attribute[@class='resistance']">
511    <xsl:text>(RESISTANCE&nbsp;points)&nbsp;</xsl:text>
512    <xsl:value-of select="enemy-attribute[@class='resistance']" />
513   </xsl:when>
514   <xsl:otherwise>
515    <xsl:value-of select="enemy-attribute[@class='endurance']" />
516   </xsl:otherwise>
517  </xsl:choose>
518  <xsl:text>\t</xsl:text>
519
520  <xsl:if test="following-sibling::node( )">
521   <xsl:value-of select="$newparagraph" />
522  </xsl:if>
523 </xsl:template>
524
525 <xsl:template match="choice">
526  <xsl:variable name="link">
527   <xsl:value-of select="@idref" />
528  </xsl:variable>
529
530  <xsl:text>\t</xsl:text>
531  <xsl:for-each select="* | text()">
532   <xsl:choose>
533    <xsl:when test="self::link-text">
534     <xsl:text>\q="#</xsl:text><xsl:value-of select="$link" /><xsl:text>"</xsl:text>
535      <xsl:apply-templates />
536     <xsl:text>\q</xsl:text>
537    </xsl:when>
538    <xsl:otherwise>
539     <xsl:apply-templates select="." />
540    </xsl:otherwise>
541   </xsl:choose>
542  </xsl:for-each>
543  <xsl:text>\t</xsl:text>
544  <xsl:if test="following-sibling::node( )">
545   <xsl:value-of select="$newparagraph" />
546  </xsl:if>
547 </xsl:template>
548
549 <xsl:template match="signpost">
550  <xsl:text>\c</xsl:text>
551   <xsl:apply-templates />
552   <xsl:value-of select="$newline" />
553  <xsl:text>\c</xsl:text>
554  <xsl:if test="following-sibling::node( )">
555   <xsl:value-of select="$newparagraph" />
556  </xsl:if>
557 </xsl:template>
558
559 <xsl:template match="blockquote">
560  <xsl:text>\t</xsl:text>
561   <xsl:apply-templates />
562  <xsl:text>\t</xsl:text>
563  <xsl:if test="following-sibling::node( )">
564   <xsl:value-of select="$newparagraph" />
565  </xsl:if>
566 </xsl:template>
567
568 <xsl:template match="illustration">
569  <xsl:choose>
570   <xsl:when test="instance[@class='pml'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
571    <xsl:text>\c\m="</xsl:text><xsl:value-of select="instance[@class='pml']/@src" /><xsl:text>"</xsl:text>
572    <xsl:value-of select="$newline" />
573    <xsl:text>\c</xsl:text>
574    <xsl:if test="following-sibling::node( )">
575     <xsl:value-of select="$newparagraph" />
576    </xsl:if>
577   </xsl:when>
578   <xsl:when test="instance[@class='text'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
579    <xsl:apply-templates select="instance[@class='text']/*" />
580    <xsl:if test="following-sibling::node( )">
581     <xsl:value-of select="$newparagraph" />
582    </xsl:if>
583   </xsl:when>
584  </xsl:choose>
585 </xsl:template>
586
587 <xsl:template match="instance" />
588
589 <xsl:template match="footnotes" />
590
591 <xsl:template match="footnote">
592  <xsl:apply-templates />
593 </xsl:template>
594
595 <xsl:template match="hr">
596  <xsl:text>\w="80%"</xsl:text>
597  <xsl:value-of select="$newline" />
598 </xsl:template>
599
600 <xsl:template match="dt">
601  <xsl:apply-templates />
602  <xsl:if test="following-sibling::node( )">
603   <xsl:value-of select="$newline" />
604  </xsl:if>
605 </xsl:template>
606
607 <xsl:template match="dd">
608  <xsl:text>\t</xsl:text>
609  <xsl:apply-templates />
610  <xsl:text>\t</xsl:text>
611  <xsl:if test="following-sibling::node( )">
612   <xsl:value-of select="$newline" />
613  </xsl:if>
614 </xsl:template>
615
616 <xsl:template match="ol/li">
617  <xsl:number count="li" /><xsl:text>. </xsl:text>
618  <xsl:apply-templates />
619  <xsl:if test="following-sibling::node( )">
620   <xsl:value-of select="$newline" />
621  </xsl:if>
622 </xsl:template>
623
624 <xsl:template match="ul/li">
625  <xsl:text>&bullet; </xsl:text>
626  <xsl:apply-templates />
627  <xsl:if test="following-sibling::node( )">
628   <xsl:value-of select="$newline" />
629  </xsl:if>
630 </xsl:template>
631
632 <xsl:template match="ul[@class='unbulleted']/li">
633  <xsl:apply-templates />
634  <xsl:if test="following-sibling::node( )">
635   <xsl:value-of select="$newline" />
636  </xsl:if>
637 </xsl:template>
638
639 <!-- ==================== inline elements ======================= -->
640
641 <xsl:template match="a">
642  <xsl:if test="@id">
643   <xsl:text>\Q="</xsl:text><xsl:value-of select="@id" /><xsl:text>"</xsl:text>
644  </xsl:if>
645  <xsl:if test="@idref">
646   <xsl:text>\q="#</xsl:text><xsl:value-of select="@idref" /><xsl:text>"</xsl:text>
647  </xsl:if>
648
649  <xsl:apply-templates />
650
651  <xsl:if test="@idref">
652   <xsl:text>\q</xsl:text>
653  </xsl:if>
654 </xsl:template>
655
656 <xsl:template match="footnote//a">
657  <xsl:apply-templates />
658 </xsl:template>
659
660 <xsl:template match="a[@class='footnote']">
661  <xsl:apply-templates />
662  <xsl:text>\Sp\Fn="</xsl:text><xsl:value-of select="@idref" /><xsl:text>"</xsl:text>
663  <xsl:number count="a[@class='footnote']" from="/" level="any" format="1" />
664  <xsl:text>\Fn\Sp</xsl:text>
665 </xsl:template>
666
667 <xsl:template match="em">
668  <xsl:text>\i{</xsl:text><xsl:apply-templates /><xsl:text>i</xsl:text>
669 </xsl:template>
670
671 <xsl:template match="strong">
672  <xsl:text>\B</xsl:text><xsl:apply-templates /><xsl:text>\B</xsl:text>
673 </xsl:template>
674
675 <xsl:template match="cite">
676  <xsl:text>\i</xsl:text><xsl:apply-templates /><xsl:text>\i</xsl:text>
677 </xsl:template>
678
679 <xsl:template match="thought">
680  <xsl:text>\i</xsl:text><xsl:apply-templates /><xsl:text>\i</xsl:text>
681 </xsl:template>
682
683 <xsl:template match="onomatopoeia">
684  <xsl:text>\i</xsl:text><xsl:apply-templates /><xsl:text>\i</xsl:text>
685 </xsl:template>
686
687 <xsl:template match="spell">
688  <xsl:text>\i</xsl:text><xsl:apply-templates /><xsl:text>\i</xsl:text>
689 </xsl:template>
690
691 <xsl:template match="item">
692  <xsl:apply-templates />
693 </xsl:template>
694
695 <xsl:template match="foreign">
696  <xsl:text>\i</xsl:text><xsl:apply-templates /><xsl:text>\i</xsl:text>
697 </xsl:template>
698
699 <xsl:template match="quote">
700  <xsl:text>&lsquot;</xsl:text>
701   <xsl:apply-templates />
702  <xsl:if test="not(self::*[@class='open-ended'])"><xsl:text>&rsquot;</xsl:text></xsl:if>
703 </xsl:template>
704
705 <xsl:template match="quote//quote">
706  <xsl:text>&ldquot;</xsl:text>
707   <xsl:apply-templates />
708  <xsl:if test="not(self::*[@class='open-ended'])"><xsl:text>&rdquot;</xsl:text></xsl:if>
709 </xsl:template>
710
711 <xsl:template match="code">
712  <xsl:apply-templates />
713 </xsl:template>
714
715 <xsl:template match="br">
716  <xsl:value-of select="$newline" />
717 </xsl:template>
718
719 </xsl:transform>
720