docbook_xsl_wrapper 0.1.2 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/CHANGELOG +41 -0
  4. data/README.md +9 -17
  5. data/bin/docbook_xsl_wrapper +9 -14
  6. data/docbook_xsl_wrapper.gemspec +8 -7
  7. data/lib/docbook_xsl_wrapper.rb +24 -1
  8. data/lib/docbook_xsl_wrapper/epub.rb +124 -122
  9. data/lib/docbook_xsl_wrapper/options.rb +1 -1
  10. data/lib/docbook_xsl_wrapper/validate.rb +22 -0
  11. data/lib/docbook_xsl_wrapper/version.rb +1 -1
  12. data/schema/docbookxi.rng +18654 -0
  13. data/spec/docbook_xsl_wrapper/validate_spec.rb +64 -0
  14. data/xsl/AUTHORS +4 -0
  15. data/xsl/COPYING +48 -0
  16. data/xsl/REVISION +1 -0
  17. data/xsl/VERSION.xsl +115 -0
  18. data/xsl/common/addns.xsl +124 -0
  19. data/xsl/common/af.xml +1272 -0
  20. data/xsl/common/am.xml +1272 -0
  21. data/xsl/common/ar.xml +1272 -0
  22. data/xsl/common/as.xml +703 -0
  23. data/xsl/common/ast.xml +703 -0
  24. data/xsl/common/autoidx-kimber.xsl +45 -0
  25. data/xsl/common/autoidx-kosek.xsl +155 -0
  26. data/xsl/common/az.xml +715 -0
  27. data/xsl/common/bg.xml +767 -0
  28. data/xsl/common/bn.xml +1272 -0
  29. data/xsl/common/bn_in.xml +703 -0
  30. data/xsl/common/bs.xml +705 -0
  31. data/xsl/common/ca.xml +703 -0
  32. data/xsl/common/charmap.xsl +222 -0
  33. data/xsl/common/common.xsl +2129 -0
  34. data/xsl/common/cs.xml +743 -0
  35. data/xsl/common/cy.xml +1288 -0
  36. data/xsl/common/da.xml +707 -0
  37. data/xsl/common/de.xml +709 -0
  38. data/xsl/common/el.xml +772 -0
  39. data/xsl/common/en.xml +1272 -0
  40. data/xsl/common/entities.ent +67 -0
  41. data/xsl/common/eo.xml +1272 -0
  42. data/xsl/common/es.xml +719 -0
  43. data/xsl/common/et.xml +1272 -0
  44. data/xsl/common/eu.xml +1272 -0
  45. data/xsl/common/fa.xml +703 -0
  46. data/xsl/common/fi.xml +713 -0
  47. data/xsl/common/fr.xml +733 -0
  48. data/xsl/common/ga.xml +1272 -0
  49. data/xsl/common/gentext.xsl +855 -0
  50. data/xsl/common/gl.xml +1272 -0
  51. data/xsl/common/gu.xml +703 -0
  52. data/xsl/common/he.xml +1272 -0
  53. data/xsl/common/hi.xml +703 -0
  54. data/xsl/common/hr.xml +705 -0
  55. data/xsl/common/hu.xml +721 -0
  56. data/xsl/common/id.xml +1272 -0
  57. data/xsl/common/insertfile.xsl +113 -0
  58. data/xsl/common/is.xml +715 -0
  59. data/xsl/common/it.xml +1272 -0
  60. data/xsl/common/ja.xml +703 -0
  61. data/xsl/common/ka.xml +743 -0
  62. data/xsl/common/kn.xml +1272 -0
  63. data/xsl/common/ko.xml +1272 -0
  64. data/xsl/common/ky.xml +775 -0
  65. data/xsl/common/l10n.dtd +64 -0
  66. data/xsl/common/l10n.xml +78 -0
  67. data/xsl/common/l10n.xsl +598 -0
  68. data/xsl/common/la.xml +1272 -0
  69. data/xsl/common/labels.xsl +933 -0
  70. data/xsl/common/lt.xml +721 -0
  71. data/xsl/common/lv.xml +1272 -0
  72. data/xsl/common/ml.xml +703 -0
  73. data/xsl/common/mn.xml +773 -0
  74. data/xsl/common/mr.xml +703 -0
  75. data/xsl/common/nb.xml +1272 -0
  76. data/xsl/common/nds.xml +709 -0
  77. data/xsl/common/nl.xml +703 -0
  78. data/xsl/common/nn.xml +1272 -0
  79. data/xsl/common/olink.xsl +1284 -0
  80. data/xsl/common/or.xml +1272 -0
  81. data/xsl/common/pa.xml +703 -0
  82. data/xsl/common/pi.xml +168 -0
  83. data/xsl/common/pi.xsl +347 -0
  84. data/xsl/common/pl.xml +721 -0
  85. data/xsl/common/pt.xml +1272 -0
  86. data/xsl/common/pt_br.xml +1272 -0
  87. data/xsl/common/refentry.xsl +1353 -0
  88. data/xsl/common/ro.xml +1272 -0
  89. data/xsl/common/ru.xml +769 -0
  90. data/xsl/common/sk.xml +1272 -0
  91. data/xsl/common/sl.xml +1272 -0
  92. data/xsl/common/sq.xml +1272 -0
  93. data/xsl/common/sr.xml +763 -0
  94. data/xsl/common/sr_Latn.xml +722 -0
  95. data/xsl/common/subtitles.xsl +181 -0
  96. data/xsl/common/sv.xml +707 -0
  97. data/xsl/common/ta.xml +703 -0
  98. data/xsl/common/table.xsl +515 -0
  99. data/xsl/common/targetdatabase.dtd +49 -0
  100. data/xsl/common/targets.xsl +338 -0
  101. data/xsl/common/te.xml +703 -0
  102. data/xsl/common/th.xml +1272 -0
  103. data/xsl/common/titles.xsl +850 -0
  104. data/xsl/common/tl.xml +1272 -0
  105. data/xsl/common/tr.xml +709 -0
  106. data/xsl/common/uk.xml +769 -0
  107. data/xsl/common/ur.xml +705 -0
  108. data/xsl/common/utility.xsl +291 -0
  109. data/xsl/common/vi.xml +1272 -0
  110. data/xsl/common/xh.xml +1272 -0
  111. data/xsl/common/zh.xml +703 -0
  112. data/xsl/common/zh_cn.xml +703 -0
  113. data/xsl/common/zh_tw.xml +703 -0
  114. data/xsl/epub/docbook.xsl +1769 -0
  115. data/xsl/epub3/chunk.xsl +30 -0
  116. data/xsl/epub3/docbook-epub.css.xml +142 -0
  117. data/xsl/epub3/docbook.xsl +20 -0
  118. data/xsl/epub3/epub3-chunk-mods.xsl +52 -0
  119. data/xsl/epub3/epub3-element-mods.xsl +2533 -0
  120. data/xsl/epub3/titlepage.templates.xml +712 -0
  121. data/xsl/epub3/titlepage.templates.xsl +3842 -0
  122. data/xsl/lib/lib.xsl +533 -0
  123. data/xsl/xhtml/admon.xsl +142 -0
  124. data/xsl/xhtml/annotations.xsl +160 -0
  125. data/xsl/xhtml/autoidx.xsl +831 -0
  126. data/xsl/xhtml/autotoc.xsl +706 -0
  127. data/xsl/xhtml/biblio-iso690.xsl +1302 -0
  128. data/xsl/xhtml/biblio.xsl +1371 -0
  129. data/xsl/xhtml/block.xsl +584 -0
  130. data/xsl/xhtml/callout.xsl +210 -0
  131. data/xsl/xhtml/chunk-code.xsl +675 -0
  132. data/xsl/xhtml/chunk-common.xsl +1627 -0
  133. data/xsl/xhtml/chunker.xsl +317 -0
  134. data/xsl/xhtml/component.xsl +440 -0
  135. data/xsl/xhtml/division.xsl +214 -0
  136. data/xsl/xhtml/ebnf.xsl +331 -0
  137. data/xsl/xhtml/footnote.xsl +346 -0
  138. data/xsl/xhtml/formal.xsl +496 -0
  139. data/xsl/xhtml/glossary.xsl +602 -0
  140. data/xsl/xhtml/graphics.xsl +1537 -0
  141. data/xsl/xhtml/html-rtf.xsl +321 -0
  142. data/xsl/xhtml/html.xsl +690 -0
  143. data/xsl/xhtml/htmltbl.xsl +102 -0
  144. data/xsl/xhtml/index.xsl +264 -0
  145. data/xsl/xhtml/info.xsl +48 -0
  146. data/xsl/xhtml/inline.xsl +1508 -0
  147. data/xsl/xhtml/its.xsl +109 -0
  148. data/xsl/xhtml/keywords.xsl +38 -0
  149. data/xsl/xhtml/lists.xsl +1227 -0
  150. data/xsl/xhtml/math.xsl +286 -0
  151. data/xsl/xhtml/param.xsl +449 -0
  152. data/xsl/xhtml/pi.xsl +1237 -0
  153. data/xsl/xhtml/qandaset.xsl +440 -0
  154. data/xsl/xhtml/refentry.xsl +307 -0
  155. data/xsl/xhtml/sections.xsl +564 -0
  156. data/xsl/xhtml/synop.xsl +1623 -0
  157. data/xsl/xhtml/table.xsl +1179 -0
  158. data/xsl/xhtml/task.xsl +76 -0
  159. data/xsl/xhtml/titlepage.templates.xsl +4005 -0
  160. data/xsl/xhtml/titlepage.xsl +1108 -0
  161. data/xsl/xhtml/toc.xsl +334 -0
  162. data/xsl/xhtml/verbatim.xsl +389 -0
  163. data/xsl/xhtml/xref.xsl +1268 -0
  164. data/xsl/xhtml5/docbook.xsl +22 -0
  165. data/xsl/xhtml5/html5-chunk-mods.xsl +112 -0
  166. data/xsl/xhtml5/html5-element-mods.xsl +791 -0
  167. data/xsl/xhtml5/xhtml-docbook.xsl +531 -0
  168. metadata +207 -27
  169. data/.rvmrc +0 -48
  170. data/xslt/obfuscate.xsl +0 -12
@@ -0,0 +1,855 @@
1
+ <?xml version='1.0'?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
+ xmlns:d="http://docbook.org/ns/docbook"
4
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
5
+ exclude-result-prefixes="doc d"
6
+ version='1.0'>
7
+
8
+ <!-- ********************************************************************
9
+ $Id: gentext.xsl 9790 2013-08-28 22:55:38Z bobstayton $
10
+ ********************************************************************
11
+
12
+ This file is part of the XSL DocBook Stylesheet distribution.
13
+ See ../README or http://docbook.sf.net/release/xsl/current/ for
14
+ copyright and other information.
15
+
16
+ ******************************************************************** -->
17
+
18
+ <!-- ==================================================================== -->
19
+
20
+
21
+ <xsl:template match="*" mode="object.title.template">
22
+ <xsl:call-template name="gentext.template">
23
+ <xsl:with-param name="context" select="'title'"/>
24
+ <xsl:with-param name="name">
25
+ <xsl:call-template name="xpath.location"/>
26
+ </xsl:with-param>
27
+ </xsl:call-template>
28
+ </xsl:template>
29
+
30
+ <xsl:template match="d:chapter" mode="object.title.template">
31
+ <xsl:choose>
32
+ <xsl:when test="string($chapter.autolabel) != 0">
33
+ <xsl:call-template name="gentext.template">
34
+ <xsl:with-param name="context" select="'title-numbered'"/>
35
+ <xsl:with-param name="name">
36
+ <xsl:call-template name="xpath.location"/>
37
+ </xsl:with-param>
38
+ </xsl:call-template>
39
+ </xsl:when>
40
+ <xsl:otherwise>
41
+ <xsl:call-template name="gentext.template">
42
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
43
+ <xsl:with-param name="name">
44
+ <xsl:call-template name="xpath.location"/>
45
+ </xsl:with-param>
46
+ </xsl:call-template>
47
+ </xsl:otherwise>
48
+ </xsl:choose>
49
+ </xsl:template>
50
+
51
+ <xsl:template match="d:appendix" mode="object.title.template">
52
+ <xsl:choose>
53
+ <xsl:when test="string($appendix.autolabel) != 0">
54
+ <xsl:call-template name="gentext.template">
55
+ <xsl:with-param name="context" select="'title-numbered'"/>
56
+ <xsl:with-param name="name">
57
+ <xsl:call-template name="xpath.location"/>
58
+ </xsl:with-param>
59
+ </xsl:call-template>
60
+ </xsl:when>
61
+ <xsl:otherwise>
62
+ <xsl:call-template name="gentext.template">
63
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
64
+ <xsl:with-param name="name">
65
+ <xsl:call-template name="xpath.location"/>
66
+ </xsl:with-param>
67
+ </xsl:call-template>
68
+ </xsl:otherwise>
69
+ </xsl:choose>
70
+ </xsl:template>
71
+
72
+ <xsl:template match="d:part" mode="object.title.template">
73
+ <xsl:choose>
74
+ <xsl:when test="string($part.autolabel) != 0">
75
+ <xsl:call-template name="gentext.template">
76
+ <xsl:with-param name="context" select="'title-numbered'"/>
77
+ <xsl:with-param name="name">
78
+ <xsl:call-template name="xpath.location"/>
79
+ </xsl:with-param>
80
+ </xsl:call-template>
81
+ </xsl:when>
82
+ <xsl:otherwise>
83
+ <xsl:call-template name="gentext.template">
84
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
85
+ <xsl:with-param name="name">
86
+ <xsl:call-template name="xpath.location"/>
87
+ </xsl:with-param>
88
+ </xsl:call-template>
89
+ </xsl:otherwise>
90
+ </xsl:choose>
91
+ </xsl:template>
92
+
93
+ <xsl:template match="d:section|d:sect1|d:sect2|d:sect3|d:sect4|d:sect5|d:simplesect
94
+ |d:bridgehead|d:topic"
95
+ mode="object.title.template">
96
+ <xsl:variable name="is.numbered">
97
+ <xsl:call-template name="label.this.section"/>
98
+ </xsl:variable>
99
+ <xsl:choose>
100
+ <xsl:when test="$is.numbered != 0">
101
+ <xsl:call-template name="gentext.template">
102
+ <xsl:with-param name="context" select="'title-numbered'"/>
103
+ <xsl:with-param name="name">
104
+ <xsl:call-template name="xpath.location"/>
105
+ </xsl:with-param>
106
+ </xsl:call-template>
107
+ </xsl:when>
108
+ <xsl:otherwise>
109
+ <xsl:call-template name="gentext.template">
110
+ <xsl:with-param name="context" select="'title-unnumbered'"/>
111
+ <xsl:with-param name="name">
112
+ <xsl:call-template name="xpath.location"/>
113
+ </xsl:with-param>
114
+ </xsl:call-template>
115
+ </xsl:otherwise>
116
+ </xsl:choose>
117
+ </xsl:template>
118
+
119
+ <xsl:template match="d:procedure" mode="object.title.template">
120
+ <xsl:variable name="title" select="d:title|d:blockinfo/d:title|d:info/d:title"/>
121
+ <xsl:choose>
122
+ <xsl:when test="$formal.procedures != 0 and $title">
123
+ <xsl:call-template name="gentext.template">
124
+ <xsl:with-param name="context" select="'title'"/>
125
+ <xsl:with-param name="name">
126
+ <xsl:call-template name="xpath.location"/>
127
+ <xsl:text>.formal</xsl:text>
128
+ </xsl:with-param>
129
+ </xsl:call-template>
130
+ </xsl:when>
131
+ <xsl:otherwise>
132
+ <xsl:call-template name="gentext.template">
133
+ <xsl:with-param name="context" select="'title'"/>
134
+ <xsl:with-param name="name">
135
+ <xsl:call-template name="xpath.location"/>
136
+ </xsl:with-param>
137
+ </xsl:call-template>
138
+ </xsl:otherwise>
139
+ </xsl:choose>
140
+ </xsl:template>
141
+
142
+ <!-- ============================================================ -->
143
+
144
+ <xsl:template match="*" mode="object.subtitle.template">
145
+ <xsl:call-template name="gentext.template">
146
+ <xsl:with-param name="context" select="'subtitle'"/>
147
+ <xsl:with-param name="name">
148
+ <xsl:call-template name="xpath.location"/>
149
+ </xsl:with-param>
150
+ </xsl:call-template>
151
+ </xsl:template>
152
+
153
+ <!-- ============================================================ -->
154
+
155
+ <xsl:template match="*" mode="is.autonumber">
156
+ <xsl:value-of select="'0'"/>
157
+ </xsl:template>
158
+
159
+ <xsl:template match="d:section|d:sect1|d:sect2|d:sect3|d:sect4|d:sect5"
160
+ mode="is.autonumber">
161
+ <xsl:call-template name="label.this.section"/>
162
+ </xsl:template>
163
+
164
+ <xsl:template match="d:figure|d:example|d:table|d:equation" mode="is.autonumber">
165
+ <xsl:value-of select="'1'"/>
166
+ </xsl:template>
167
+
168
+ <xsl:template match="d:appendix" mode="is.autonumber">
169
+ <xsl:value-of select="$appendix.autolabel"/>
170
+ </xsl:template>
171
+
172
+ <xsl:template match="d:chapter" mode="is.autonumber">
173
+ <xsl:value-of select="$chapter.autolabel"/>
174
+ </xsl:template>
175
+
176
+ <xsl:template match="d:part" mode="is.autonumber">
177
+ <xsl:value-of select="$part.autolabel"/>
178
+ </xsl:template>
179
+
180
+ <xsl:template match="d:preface" mode="is.autonumber">
181
+ <xsl:value-of select="$preface.autolabel"/>
182
+ </xsl:template>
183
+
184
+ <xsl:template match="d:question|d:answer" mode="is.autonumber">
185
+ <xsl:choose>
186
+ <xsl:when test="$qanda.defaultlabel = 'number'
187
+ and not(d:label)">
188
+ <xsl:value-of select="'1'"/>
189
+ </xsl:when>
190
+ <xsl:otherwise>
191
+ <xsl:value-of select="'0'"/>
192
+ </xsl:otherwise>
193
+ </xsl:choose>
194
+ </xsl:template>
195
+
196
+ <xsl:template match="d:qandadiv" mode="is.autonumber">
197
+ <xsl:value-of select="$qandadiv.autolabel"/>
198
+ </xsl:template>
199
+
200
+ <xsl:template match="d:bridgehead" mode="is.autonumber">
201
+ <!-- bridgeheads are not numbered -->
202
+ <xsl:text>0</xsl:text>
203
+ </xsl:template>
204
+
205
+ <xsl:template match="d:procedure" mode="is.autonumber">
206
+ <xsl:value-of select="$formal.procedures"/>
207
+ </xsl:template>
208
+
209
+
210
+ <xsl:template match="*" mode="object.xref.template">
211
+ <xsl:param name="purpose"/>
212
+ <xsl:param name="xrefstyle"/>
213
+ <xsl:param name="referrer"/>
214
+
215
+ <!-- Is autonumbering on? -->
216
+ <xsl:variable name="autonumber">
217
+ <xsl:apply-templates select="." mode="is.autonumber"/>
218
+ </xsl:variable>
219
+
220
+ <xsl:variable name="number-and-title-template">
221
+ <xsl:call-template name="gentext.template.exists">
222
+ <xsl:with-param name="context" select="'xref-number-and-title'"/>
223
+ <xsl:with-param name="name">
224
+ <xsl:call-template name="xpath.location"/>
225
+ </xsl:with-param>
226
+ </xsl:call-template>
227
+ </xsl:variable>
228
+
229
+ <xsl:variable name="number-template">
230
+ <xsl:call-template name="gentext.template.exists">
231
+ <xsl:with-param name="context" select="'xref-number'"/>
232
+ <xsl:with-param name="name">
233
+ <xsl:call-template name="xpath.location"/>
234
+ </xsl:with-param>
235
+ </xsl:call-template>
236
+ </xsl:variable>
237
+
238
+ <xsl:variable name="context">
239
+ <xsl:choose>
240
+ <xsl:when test="self::d:equation and not(d:title) and not(d:info/d:title)">
241
+ <xsl:value-of select="'xref-number'"/>
242
+ </xsl:when>
243
+ <xsl:when test="string($autonumber) != 0
244
+ and $number-and-title-template != 0
245
+ and $xref.with.number.and.title != 0">
246
+ <xsl:value-of select="'xref-number-and-title'"/>
247
+ </xsl:when>
248
+ <xsl:when test="string($autonumber) != 0
249
+ and $number-template != 0">
250
+ <xsl:value-of select="'xref-number'"/>
251
+ </xsl:when>
252
+ <xsl:otherwise>
253
+ <xsl:value-of select="'xref'"/>
254
+ </xsl:otherwise>
255
+ </xsl:choose>
256
+ </xsl:variable>
257
+
258
+ <xsl:call-template name="gentext.template">
259
+ <xsl:with-param name="context" select="$context"/>
260
+ <xsl:with-param name="name">
261
+ <xsl:call-template name="xpath.location"/>
262
+ </xsl:with-param>
263
+ <xsl:with-param name="purpose" select="$purpose"/>
264
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
265
+ <xsl:with-param name="referrer" select="$referrer"/>
266
+ </xsl:call-template>
267
+
268
+ </xsl:template>
269
+
270
+
271
+ <!-- ============================================================ -->
272
+
273
+ <xsl:template match="*" mode="object.title.markup">
274
+ <xsl:param name="allow-anchors" select="0"/>
275
+ <xsl:variable name="template">
276
+ <xsl:apply-templates select="." mode="object.title.template"/>
277
+ </xsl:variable>
278
+
279
+ <!--
280
+ <xsl:message>
281
+ <xsl:text>object.title.markup: </xsl:text>
282
+ <xsl:value-of select="local-name(.)"/>
283
+ <xsl:text>: </xsl:text>
284
+ <xsl:value-of select="$template"/>
285
+ </xsl:message>
286
+ -->
287
+
288
+ <xsl:call-template name="substitute-markup">
289
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
290
+ <xsl:with-param name="template" select="$template"/>
291
+ </xsl:call-template>
292
+ </xsl:template>
293
+
294
+ <xsl:template match="*" mode="object.title.markup.textonly">
295
+ <xsl:variable name="title">
296
+ <xsl:apply-templates select="." mode="object.title.markup"/>
297
+ </xsl:variable>
298
+ <xsl:value-of select="normalize-space($title)"/>
299
+ </xsl:template>
300
+
301
+ <!-- ============================================================ -->
302
+
303
+ <xsl:template match="*" mode="object.titleabbrev.markup">
304
+ <xsl:param name="allow-anchors" select="0"/>
305
+
306
+ <!-- Just for consistency in template naming -->
307
+
308
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
309
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
310
+ </xsl:apply-templates>
311
+ </xsl:template>
312
+
313
+ <!-- ============================================================ -->
314
+
315
+ <xsl:template match="*" mode="object.subtitle.markup">
316
+ <xsl:variable name="template">
317
+ <xsl:apply-templates select="." mode="object.subtitle.template"/>
318
+ </xsl:variable>
319
+
320
+ <xsl:call-template name="substitute-markup">
321
+ <xsl:with-param name="template" select="$template"/>
322
+ </xsl:call-template>
323
+ </xsl:template>
324
+
325
+ <!-- ============================================================ -->
326
+
327
+ <xsl:template match="*" mode="object.xref.markup">
328
+ <xsl:param name="purpose"/>
329
+ <xsl:param name="xrefstyle"/>
330
+ <xsl:param name="referrer"/>
331
+ <xsl:param name="verbose" select="1"/>
332
+
333
+ <xsl:variable name="template">
334
+ <xsl:choose>
335
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')">
336
+ <xsl:call-template name="make.gentext.template">
337
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
338
+ <xsl:with-param name="purpose" select="$purpose"/>
339
+ <xsl:with-param name="referrer" select="$referrer"/>
340
+ </xsl:call-template>
341
+ </xsl:when>
342
+ <xsl:when test="starts-with(normalize-space($xrefstyle), 'template:')">
343
+ <xsl:value-of select="substring-after(normalize-space($xrefstyle), 'template:')"/>
344
+ </xsl:when>
345
+ <xsl:otherwise>
346
+ <xsl:apply-templates select="." mode="object.xref.template">
347
+ <xsl:with-param name="purpose" select="$purpose"/>
348
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
349
+ <xsl:with-param name="referrer" select="$referrer"/>
350
+ </xsl:apply-templates>
351
+ </xsl:otherwise>
352
+ </xsl:choose>
353
+ </xsl:variable>
354
+
355
+ <!--
356
+ <xsl:message>
357
+ <xsl:text>object.xref.markup: </xsl:text>
358
+ <xsl:value-of select="local-name(.)"/>
359
+ <xsl:text>(</xsl:text>
360
+ <xsl:value-of select="$xrefstyle"/>
361
+ <xsl:text>, </xsl:text>
362
+ <xsl:value-of select="$purpose"/>
363
+ <xsl:text>)</xsl:text>
364
+ <xsl:text>: [</xsl:text>
365
+ <xsl:value-of select="$template"/>
366
+ <xsl:text>]</xsl:text>
367
+ </xsl:message>
368
+ -->
369
+
370
+ <xsl:if test="$template = '' and $verbose != 0">
371
+ <xsl:message>
372
+ <xsl:text>object.xref.markup: empty xref template</xsl:text>
373
+ <xsl:text> for linkend="</xsl:text>
374
+ <xsl:value-of select="@id|@xml:id"/>
375
+ <xsl:text>" and @xrefstyle="</xsl:text>
376
+ <xsl:value-of select="$xrefstyle"/>
377
+ <xsl:text>"</xsl:text>
378
+ </xsl:message>
379
+ </xsl:if>
380
+
381
+ <xsl:call-template name="substitute-markup">
382
+ <xsl:with-param name="purpose" select="$purpose"/>
383
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
384
+ <xsl:with-param name="referrer" select="$referrer"/>
385
+ <xsl:with-param name="template" select="$template"/>
386
+ <xsl:with-param name="verbose" select="$verbose"/>
387
+ </xsl:call-template>
388
+ </xsl:template>
389
+
390
+ <xsl:template match="d:listitem" mode="object.xref.markup">
391
+ <xsl:param name="verbose" select="1"/>
392
+
393
+ <xsl:choose>
394
+ <xsl:when test="parent::d:orderedlist">
395
+ <xsl:variable name="template">
396
+ <xsl:apply-templates select="." mode="object.xref.template"/>
397
+ </xsl:variable>
398
+ <xsl:call-template name="substitute-markup">
399
+ <xsl:with-param name="template" select="$template"/>
400
+ </xsl:call-template>
401
+ </xsl:when>
402
+ <xsl:when test="$verbose != 0">
403
+ <xsl:message>
404
+ <xsl:text>Xref is only supported to listitems in an</xsl:text>
405
+ <xsl:text> orderedlist: </xsl:text>
406
+ <xsl:value-of select=".//@id|.//@xml:id"/>
407
+ </xsl:message>
408
+ <xsl:text>???</xsl:text>
409
+ </xsl:when>
410
+ </xsl:choose>
411
+ </xsl:template>
412
+
413
+ <xsl:template match="d:question" mode="object.xref.markup">
414
+ <xsl:param name="purpose"/>
415
+ <xsl:param name="xrefstyle"/>
416
+ <xsl:param name="referrer"/>
417
+
418
+ <xsl:variable name="deflabel">
419
+ <xsl:choose>
420
+ <xsl:when test="ancestor-or-self::*[@defaultlabel]">
421
+ <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
422
+ /@defaultlabel"/>
423
+ </xsl:when>
424
+ <xsl:otherwise>
425
+ <xsl:value-of select="$qanda.defaultlabel"/>
426
+ </xsl:otherwise>
427
+ </xsl:choose>
428
+ </xsl:variable>
429
+
430
+ <xsl:variable name="template">
431
+ <xsl:choose>
432
+ <!-- This avoids double Q: Q: in xref when defaultlabel=qanda -->
433
+ <xsl:when test="$deflabel = 'qanda' and not(d:label)">%n</xsl:when>
434
+ <xsl:otherwise>
435
+ <xsl:apply-templates select="." mode="object.xref.template">
436
+ <xsl:with-param name="purpose" select="$purpose"/>
437
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
438
+ <xsl:with-param name="referrer" select="$referrer"/>
439
+ </xsl:apply-templates>
440
+ </xsl:otherwise>
441
+ </xsl:choose>
442
+ </xsl:variable>
443
+
444
+ <xsl:call-template name="substitute-markup">
445
+ <xsl:with-param name="purpose" select="$purpose"/>
446
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
447
+ <xsl:with-param name="referrer" select="$referrer"/>
448
+ <xsl:with-param name="template" select="$template"/>
449
+ </xsl:call-template>
450
+ </xsl:template>
451
+
452
+ <!-- ============================================================ -->
453
+
454
+ <xsl:template name="substitute-markup">
455
+ <xsl:param name="template" select="''"/>
456
+ <xsl:param name="allow-anchors" select="'0'"/>
457
+ <xsl:param name="title" select="''"/>
458
+ <xsl:param name="subtitle" select="''"/>
459
+ <xsl:param name="docname" select="''"/>
460
+ <xsl:param name="label" select="''"/>
461
+ <xsl:param name="pagenumber" select="''"/>
462
+ <xsl:param name="purpose"/>
463
+ <xsl:param name="xrefstyle"/>
464
+ <xsl:param name="referrer"/>
465
+ <xsl:param name="verbose"/>
466
+
467
+ <xsl:choose>
468
+ <xsl:when test="contains($template, '%')">
469
+ <xsl:value-of select="substring-before($template, '%')"/>
470
+ <xsl:variable name="candidate"
471
+ select="substring(substring-after($template, '%'), 1, 1)"/>
472
+ <xsl:choose>
473
+ <xsl:when test="$candidate = 't'">
474
+ <xsl:apply-templates select="." mode="insert.title.markup">
475
+ <xsl:with-param name="purpose" select="$purpose"/>
476
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
477
+ <xsl:with-param name="title">
478
+ <xsl:choose>
479
+ <xsl:when test="$title != ''">
480
+ <xsl:copy-of select="$title"/>
481
+ </xsl:when>
482
+ <xsl:when test="$purpose = 'xref'">
483
+ <xsl:apply-templates select="." mode="titleabbrev.markup">
484
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
485
+ <xsl:with-param name="verbose" select="$verbose"/>
486
+ </xsl:apply-templates>
487
+ </xsl:when>
488
+ <xsl:otherwise>
489
+ <xsl:apply-templates select="." mode="title.markup">
490
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
491
+ <xsl:with-param name="verbose" select="$verbose"/>
492
+ </xsl:apply-templates>
493
+ </xsl:otherwise>
494
+ </xsl:choose>
495
+ </xsl:with-param>
496
+ </xsl:apply-templates>
497
+ </xsl:when>
498
+ <xsl:when test="$candidate = 's'">
499
+ <xsl:apply-templates select="." mode="insert.subtitle.markup">
500
+ <xsl:with-param name="purpose" select="$purpose"/>
501
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
502
+ <xsl:with-param name="subtitle">
503
+ <xsl:choose>
504
+ <xsl:when test="$subtitle != ''">
505
+ <xsl:copy-of select="$subtitle"/>
506
+ </xsl:when>
507
+ <xsl:otherwise>
508
+ <xsl:apply-templates select="." mode="subtitle.markup">
509
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
510
+ </xsl:apply-templates>
511
+ </xsl:otherwise>
512
+ </xsl:choose>
513
+ </xsl:with-param>
514
+ </xsl:apply-templates>
515
+ </xsl:when>
516
+ <xsl:when test="$candidate = 'n'">
517
+ <xsl:apply-templates select="." mode="insert.label.markup">
518
+ <xsl:with-param name="purpose" select="$purpose"/>
519
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
520
+ <xsl:with-param name="label">
521
+ <xsl:choose>
522
+ <xsl:when test="$label != ''">
523
+ <xsl:copy-of select="$label"/>
524
+ </xsl:when>
525
+ <xsl:otherwise>
526
+ <xsl:apply-templates select="." mode="label.markup"/>
527
+ </xsl:otherwise>
528
+ </xsl:choose>
529
+ </xsl:with-param>
530
+ </xsl:apply-templates>
531
+ </xsl:when>
532
+ <xsl:when test="$candidate = 'p'">
533
+ <xsl:apply-templates select="." mode="insert.pagenumber.markup">
534
+ <xsl:with-param name="purpose" select="$purpose"/>
535
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
536
+ <xsl:with-param name="pagenumber">
537
+ <xsl:choose>
538
+ <xsl:when test="$pagenumber != ''">
539
+ <xsl:copy-of select="$pagenumber"/>
540
+ </xsl:when>
541
+ <xsl:otherwise>
542
+ <xsl:apply-templates select="." mode="pagenumber.markup"/>
543
+ </xsl:otherwise>
544
+ </xsl:choose>
545
+ </xsl:with-param>
546
+ </xsl:apply-templates>
547
+ </xsl:when>
548
+ <xsl:when test="$candidate = 'o'">
549
+ <!-- olink target document title -->
550
+ <xsl:apply-templates select="." mode="insert.olink.docname.markup">
551
+ <xsl:with-param name="purpose" select="$purpose"/>
552
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
553
+ <xsl:with-param name="docname">
554
+ <xsl:choose>
555
+ <xsl:when test="$docname != ''">
556
+ <xsl:copy-of select="$docname"/>
557
+ </xsl:when>
558
+ <xsl:otherwise>
559
+ <xsl:apply-templates select="." mode="olink.docname.markup"/>
560
+ </xsl:otherwise>
561
+ </xsl:choose>
562
+ </xsl:with-param>
563
+ </xsl:apply-templates>
564
+ </xsl:when>
565
+ <xsl:when test="$candidate = 'd'">
566
+ <xsl:apply-templates select="." mode="insert.direction.markup">
567
+ <xsl:with-param name="purpose" select="$purpose"/>
568
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
569
+ <xsl:with-param name="direction">
570
+ <xsl:choose>
571
+ <xsl:when test="$referrer">
572
+ <xsl:variable name="referent-is-below">
573
+ <xsl:for-each select="preceding::d:xref">
574
+ <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if>
575
+ </xsl:for-each>
576
+ </xsl:variable>
577
+ <xsl:choose>
578
+ <xsl:when test="$referent-is-below = ''">
579
+ <xsl:call-template name="gentext">
580
+ <xsl:with-param name="key" select="'above'"/>
581
+ </xsl:call-template>
582
+ </xsl:when>
583
+ <xsl:otherwise>
584
+ <xsl:call-template name="gentext">
585
+ <xsl:with-param name="key" select="'below'"/>
586
+ </xsl:call-template>
587
+ </xsl:otherwise>
588
+ </xsl:choose>
589
+ </xsl:when>
590
+ <xsl:otherwise>
591
+ <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message>
592
+ </xsl:otherwise>
593
+ </xsl:choose>
594
+ </xsl:with-param>
595
+ </xsl:apply-templates>
596
+ </xsl:when>
597
+ <xsl:when test="$candidate = '%' ">
598
+ <xsl:text>%</xsl:text>
599
+ </xsl:when>
600
+ <xsl:otherwise>
601
+ <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/>
602
+ </xsl:otherwise>
603
+ </xsl:choose>
604
+ <!-- recurse with the rest of the template string -->
605
+ <xsl:variable name="rest"
606
+ select="substring($template,
607
+ string-length(substring-before($template, '%'))+3)"/>
608
+ <xsl:call-template name="substitute-markup">
609
+ <xsl:with-param name="template" select="$rest"/>
610
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
611
+ <xsl:with-param name="title" select="$title"/>
612
+ <xsl:with-param name="subtitle" select="$subtitle"/>
613
+ <xsl:with-param name="docname" select="$docname"/>
614
+ <xsl:with-param name="label" select="$label"/>
615
+ <xsl:with-param name="pagenumber" select="$pagenumber"/>
616
+ <xsl:with-param name="purpose" select="$purpose"/>
617
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
618
+ <xsl:with-param name="referrer" select="$referrer"/>
619
+ <xsl:with-param name="verbose" select="$verbose"/>
620
+ </xsl:call-template>
621
+ </xsl:when>
622
+ <xsl:otherwise>
623
+ <xsl:value-of select="$template"/>
624
+ </xsl:otherwise>
625
+ </xsl:choose>
626
+ </xsl:template>
627
+
628
+ <!-- ============================================================ -->
629
+
630
+ <xsl:template name="make.gentext.template">
631
+ <xsl:param name="xrefstyle" select="''"/>
632
+ <xsl:param name="purpose"/>
633
+ <xsl:param name="referrer"/>
634
+ <xsl:param name="lang">
635
+ <xsl:call-template name="l10n.language"/>
636
+ </xsl:param>
637
+ <xsl:param name="target.elem" select="local-name(.)"/>
638
+
639
+ <!-- Referrer's local name, if any -->
640
+ <xsl:variable name="referrer.local.name">
641
+ <xsl:if test="$referrer">
642
+ <xsl:value-of select="local-name($referrer)"/>
643
+ </xsl:if>
644
+ </xsl:variable>
645
+
646
+ <!-- parse xrefstyle to get parts -->
647
+ <xsl:variable name="parts"
648
+ select="substring-after(normalize-space($xrefstyle), 'select:')"/>
649
+
650
+ <xsl:variable name="labeltype">
651
+ <xsl:choose>
652
+ <xsl:when test="contains($parts, 'labelnumber')">
653
+ <xsl:text>labelnumber</xsl:text>
654
+ </xsl:when>
655
+ <xsl:when test="contains($parts, 'labelname')">
656
+ <xsl:text>labelname</xsl:text>
657
+ </xsl:when>
658
+ <xsl:when test="contains($parts, 'label')">
659
+ <xsl:text>label</xsl:text>
660
+ </xsl:when>
661
+ </xsl:choose>
662
+ </xsl:variable>
663
+
664
+ <xsl:variable name="titletype">
665
+ <xsl:choose>
666
+ <xsl:when test="contains($parts, 'quotedtitle')">
667
+ <xsl:text>quotedtitle</xsl:text>
668
+ </xsl:when>
669
+ <xsl:when test="contains($parts, 'title')">
670
+ <xsl:text>title</xsl:text>
671
+ </xsl:when>
672
+ </xsl:choose>
673
+ </xsl:variable>
674
+
675
+ <xsl:variable name="pagetype">
676
+ <xsl:choose>
677
+ <xsl:when test="$insert.olink.page.number = 'no' and
678
+ $referrer.local.name = 'olink'">
679
+ <!-- suppress page numbers -->
680
+ </xsl:when>
681
+ <xsl:when test="$insert.xref.page.number = 'no' and
682
+ $referrer.local.name != 'olink'">
683
+ <!-- suppress page numbers -->
684
+ </xsl:when>
685
+ <xsl:when test="contains($parts, 'nopage')">
686
+ <xsl:text>nopage</xsl:text>
687
+ </xsl:when>
688
+ <xsl:when test="contains($parts, 'pagenumber')">
689
+ <xsl:text>pagenumber</xsl:text>
690
+ </xsl:when>
691
+ <xsl:when test="contains($parts, 'pageabbrev')">
692
+ <xsl:text>pageabbrev</xsl:text>
693
+ </xsl:when>
694
+ <xsl:when test="contains($parts, 'Page')">
695
+ <xsl:text>Page</xsl:text>
696
+ </xsl:when>
697
+ <xsl:when test="contains($parts, 'page')">
698
+ <xsl:text>page</xsl:text>
699
+ </xsl:when>
700
+ </xsl:choose>
701
+ </xsl:variable>
702
+
703
+ <xsl:variable name="docnametype">
704
+ <xsl:choose>
705
+ <xsl:when test="($olink.doctitle = 0 or
706
+ $olink.doctitle = 'no') and
707
+ $referrer.local.name = 'olink'">
708
+ <!-- suppress docname -->
709
+ </xsl:when>
710
+ <xsl:when test="contains($parts, 'nodocname')">
711
+ <xsl:text>nodocname</xsl:text>
712
+ </xsl:when>
713
+ <xsl:when test="contains($parts, 'docnamelong')">
714
+ <xsl:text>docnamelong</xsl:text>
715
+ </xsl:when>
716
+ <xsl:when test="contains($parts, 'docname')">
717
+ <xsl:text>docname</xsl:text>
718
+ </xsl:when>
719
+ </xsl:choose>
720
+ </xsl:variable>
721
+
722
+ <xsl:if test="$labeltype != ''">
723
+ <xsl:choose>
724
+ <xsl:when test="$labeltype = 'labelname'">
725
+ <xsl:call-template name="gentext">
726
+ <xsl:with-param name="key">
727
+ <xsl:choose>
728
+ <xsl:when test="$referrer.local.name = 'olink'">
729
+ <xsl:value-of select="$target.elem"/>
730
+ </xsl:when>
731
+ <xsl:otherwise>
732
+ <xsl:value-of select="local-name(.)"/>
733
+ </xsl:otherwise>
734
+ </xsl:choose>
735
+ </xsl:with-param>
736
+ </xsl:call-template>
737
+ </xsl:when>
738
+ <xsl:when test="$labeltype = 'labelnumber'">
739
+ <xsl:text>%n</xsl:text>
740
+ </xsl:when>
741
+ <xsl:when test="$labeltype = 'label'">
742
+ <xsl:call-template name="gentext.template">
743
+ <xsl:with-param name="context" select="'xref-number'"/>
744
+ <xsl:with-param name="name">
745
+ <xsl:choose>
746
+ <xsl:when test="$referrer.local.name = 'olink'">
747
+ <xsl:value-of select="$target.elem"/>
748
+ </xsl:when>
749
+ <xsl:otherwise>
750
+ <xsl:call-template name="xpath.location"/>
751
+ </xsl:otherwise>
752
+ </xsl:choose>
753
+ </xsl:with-param>
754
+ <xsl:with-param name="purpose" select="$purpose"/>
755
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
756
+ <xsl:with-param name="referrer" select="$referrer"/>
757
+ </xsl:call-template>
758
+ </xsl:when>
759
+ </xsl:choose>
760
+
761
+ <xsl:choose>
762
+ <xsl:when test="$titletype != ''">
763
+ <xsl:value-of select="$xref.label-title.separator"/>
764
+ </xsl:when>
765
+ <xsl:when test="$pagetype != '' and $pagetype != 'nopage'">
766
+ <xsl:value-of select="$xref.label-page.separator"/>
767
+ </xsl:when>
768
+ </xsl:choose>
769
+ </xsl:if>
770
+
771
+ <xsl:if test="$titletype != ''">
772
+ <xsl:choose>
773
+ <xsl:when test="$titletype = 'title'">
774
+ <xsl:text>%t</xsl:text>
775
+ </xsl:when>
776
+ <xsl:when test="$titletype = 'quotedtitle'">
777
+ <xsl:call-template name="gentext.dingbat">
778
+ <xsl:with-param name="dingbat" select="'startquote'"/>
779
+ </xsl:call-template>
780
+ <xsl:text>%t</xsl:text>
781
+ <xsl:call-template name="gentext.dingbat">
782
+ <xsl:with-param name="dingbat" select="'endquote'"/>
783
+ </xsl:call-template>
784
+ </xsl:when>
785
+ </xsl:choose>
786
+
787
+ <xsl:choose>
788
+ <xsl:when test="$pagetype != '' and $pagetype != 'nopage'">
789
+ <xsl:value-of select="$xref.title-page.separator"/>
790
+ </xsl:when>
791
+ </xsl:choose>
792
+ </xsl:if>
793
+
794
+ <!-- special case: use regular xref template if just turning off page -->
795
+ <xsl:if test="($pagetype = 'nopage' or $docnametype = 'nodocname')
796
+ and $referrer.local.name != 'olink'
797
+ and $labeltype = ''
798
+ and $titletype = ''">
799
+ <xsl:apply-templates select="." mode="object.xref.template">
800
+ <xsl:with-param name="purpose" select="$purpose"/>
801
+ <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
802
+ <xsl:with-param name="referrer" select="$referrer"/>
803
+ </xsl:apply-templates>
804
+ </xsl:if>
805
+
806
+ <xsl:if test="$pagetype != ''">
807
+ <xsl:choose>
808
+ <xsl:when test="$pagetype = 'page'">
809
+ <xsl:call-template name="gentext.template">
810
+ <xsl:with-param name="context" select="'xref'"/>
811
+ <xsl:with-param name="name" select="'page'"/>
812
+ </xsl:call-template>
813
+ </xsl:when>
814
+ <xsl:when test="$pagetype = 'Page'">
815
+ <xsl:call-template name="gentext.template">
816
+ <xsl:with-param name="context" select="'xref'"/>
817
+ <xsl:with-param name="name" select="'Page'"/>
818
+ </xsl:call-template>
819
+ </xsl:when>
820
+ <xsl:when test="$pagetype = 'pageabbrev'">
821
+ <xsl:call-template name="gentext.template">
822
+ <xsl:with-param name="context" select="'xref'"/>
823
+ <xsl:with-param name="name" select="'pageabbrev'"/>
824
+ </xsl:call-template>
825
+ </xsl:when>
826
+ <xsl:when test="$pagetype = 'pagenumber'">
827
+ <xsl:text>%p</xsl:text>
828
+ </xsl:when>
829
+ </xsl:choose>
830
+
831
+ </xsl:if>
832
+
833
+ <!-- Add reference to other document title -->
834
+ <xsl:if test="$docnametype != '' and $referrer.local.name = 'olink'">
835
+ <!-- Any separator should be in the gentext template -->
836
+ <xsl:choose>
837
+ <xsl:when test="$docnametype = 'docnamelong'">
838
+ <xsl:call-template name="gentext.template">
839
+ <xsl:with-param name="context" select="'xref'"/>
840
+ <xsl:with-param name="name" select="'docnamelong'"/>
841
+ </xsl:call-template>
842
+ </xsl:when>
843
+ <xsl:when test="$docnametype = 'docname'">
844
+ <xsl:call-template name="gentext.template">
845
+ <xsl:with-param name="context" select="'xref'"/>
846
+ <xsl:with-param name="name" select="'docname'"/>
847
+ </xsl:call-template>
848
+ </xsl:when>
849
+ </xsl:choose>
850
+
851
+ </xsl:if>
852
+
853
+ </xsl:template>
854
+
855
+ </xsl:stylesheet>