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,515 @@
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: table.xsl 8392 2009-04-01 08:47:55Z 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
+ <xsl:template name="blank.spans">
21
+ <xsl:param name="cols" select="1"/>
22
+ <xsl:if test="$cols &gt; 0">
23
+ <xsl:text>0:</xsl:text>
24
+ <xsl:call-template name="blank.spans">
25
+ <xsl:with-param name="cols" select="$cols - 1"/>
26
+ </xsl:call-template>
27
+ </xsl:if>
28
+ </xsl:template>
29
+
30
+ <xsl:template name="calculate.following.spans">
31
+ <xsl:param name="colspan" select="1"/>
32
+ <xsl:param name="spans" select="''"/>
33
+
34
+ <xsl:choose>
35
+ <xsl:when test="$colspan &gt; 0">
36
+ <xsl:call-template name="calculate.following.spans">
37
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
38
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
39
+ </xsl:call-template>
40
+ </xsl:when>
41
+ <xsl:otherwise>
42
+ <xsl:value-of select="$spans"/>
43
+ </xsl:otherwise>
44
+ </xsl:choose>
45
+ </xsl:template>
46
+
47
+ <xsl:template name="finaltd">
48
+ <xsl:param name="spans"/>
49
+ <xsl:param name="col" select="0"/>
50
+
51
+ <xsl:if test="$spans != ''">
52
+ <xsl:choose>
53
+ <xsl:when test="starts-with($spans,'0:')">
54
+ <xsl:call-template name="empty.table.cell">
55
+ <xsl:with-param name="colnum" select="$col"/>
56
+ </xsl:call-template>
57
+ </xsl:when>
58
+ <xsl:otherwise></xsl:otherwise>
59
+ </xsl:choose>
60
+
61
+ <xsl:call-template name="finaltd">
62
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
63
+ <xsl:with-param name="col" select="$col+1"/>
64
+ </xsl:call-template>
65
+ </xsl:if>
66
+ </xsl:template>
67
+
68
+ <xsl:template name="sfinaltd">
69
+ <xsl:param name="spans"/>
70
+
71
+ <xsl:if test="$spans != ''">
72
+ <xsl:choose>
73
+ <xsl:when test="starts-with($spans,'0:')">0:</xsl:when>
74
+ <xsl:otherwise>
75
+ <xsl:value-of select="substring-before($spans,':')-1"/>
76
+ <xsl:text>:</xsl:text>
77
+ </xsl:otherwise>
78
+ </xsl:choose>
79
+
80
+ <xsl:call-template name="sfinaltd">
81
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
82
+ </xsl:call-template>
83
+ </xsl:if>
84
+ </xsl:template>
85
+
86
+ <xsl:template name="entry.colnum">
87
+ <xsl:param name="entry" select="."/>
88
+
89
+ <xsl:choose>
90
+ <xsl:when test="$entry/@spanname">
91
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
92
+ <xsl:variable name="spanspec"
93
+ select="($entry/ancestor::d:tgroup/d:spanspec[@spanname=$spanname]
94
+ |$entry/ancestor::d:entrytbl/d:spanspec[@spanname=$spanname])[last()]"/>
95
+ <xsl:variable name="colspec"
96
+ select="($entry/ancestor::d:tgroup/d:colspec[@colname=$spanspec/@namest]
97
+ |$entry/ancestor::d:entrytbl/d:colspec[@colname=$spanspec/@namest])[last()]"/>
98
+ <xsl:call-template name="colspec.colnum">
99
+ <xsl:with-param name="colspec" select="$colspec"/>
100
+ </xsl:call-template>
101
+ </xsl:when>
102
+ <xsl:when test="$entry/@colname">
103
+ <xsl:variable name="colname" select="$entry/@colname"/>
104
+ <xsl:variable name="colspec"
105
+ select="($entry/ancestor::d:tgroup/d:colspec[@colname=$colname]
106
+ |$entry/ancestor::d:entrytbl/d:colspec[@colname=$colname])[last()]"/>
107
+ <xsl:call-template name="colspec.colnum">
108
+ <xsl:with-param name="colspec" select="$colspec"/>
109
+ </xsl:call-template>
110
+ </xsl:when>
111
+ <xsl:when test="$entry/@namest">
112
+ <xsl:variable name="namest" select="$entry/@namest"/>
113
+ <xsl:variable name="colspec"
114
+ select="($entry/ancestor::d:tgroup/d:colspec[@colname=$namest]
115
+ |$entry/ancestor::d:entrytbl/d:colspec[@colname=$namest])[last()]"/>
116
+ <xsl:call-template name="colspec.colnum">
117
+ <xsl:with-param name="colspec" select="$colspec"/>
118
+ </xsl:call-template>
119
+ </xsl:when>
120
+ <!-- no idea, return 0 -->
121
+ <xsl:otherwise>0</xsl:otherwise>
122
+ </xsl:choose>
123
+ </xsl:template>
124
+
125
+ <doc:template name="entry.colnum" xmlns="">
126
+ <refpurpose>Determine the column number in which a given entry occurs</refpurpose>
127
+ <refdescription id="entry.colnum-desc">
128
+ <para>If an <tag>entry</tag> has a
129
+ <tag class="attribute">colname</tag> or
130
+ <tag class="attribute">namest</tag> attribute, this template
131
+ will determine the number of the column in which the entry should occur.
132
+ For other <tag>entry</tag>s, nothing is returned.</para>
133
+ </refdescription>
134
+ <refparameter id="entry.colnum-params">
135
+ <variablelist>
136
+ <varlistentry><term>entry</term>
137
+ <listitem>
138
+ <para>The <tag>entry</tag>-element which is to be tested.</para>
139
+ </listitem>
140
+ </varlistentry>
141
+ </variablelist>
142
+ </refparameter>
143
+
144
+ <refreturn id="entry.colnum-returns">
145
+ <para>This template returns the column number if it can be determined,
146
+ or 0 (the empty string)</para>
147
+ </refreturn>
148
+ </doc:template>
149
+
150
+ <xsl:template name="colspec.colnum">
151
+ <xsl:param name="colspec" select="."/>
152
+ <xsl:choose>
153
+ <xsl:when test="$colspec/@colnum">
154
+ <xsl:value-of select="$colspec/@colnum"/>
155
+ </xsl:when>
156
+ <xsl:when test="$colspec/preceding-sibling::d:colspec">
157
+ <xsl:variable name="prec.colspec.colnum">
158
+ <xsl:call-template name="colspec.colnum">
159
+ <xsl:with-param name="colspec"
160
+ select="$colspec/preceding-sibling::d:colspec[1]"/>
161
+ </xsl:call-template>
162
+ </xsl:variable>
163
+ <xsl:value-of select="$prec.colspec.colnum + 1"/>
164
+ </xsl:when>
165
+ <xsl:otherwise>1</xsl:otherwise>
166
+ </xsl:choose>
167
+ </xsl:template>
168
+
169
+ <xsl:template name="calculate.colspan">
170
+ <xsl:param name="entry" select="."/>
171
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
172
+ <xsl:variable name="spanspec"
173
+ select="($entry/ancestor::d:tgroup/d:spanspec[@spanname=$spanname]
174
+ |$entry/ancestor::d:entrytbl/d:spanspec[@spanname=$spanname])[last()]"/>
175
+
176
+ <xsl:variable name="namest">
177
+ <xsl:choose>
178
+ <xsl:when test="@spanname">
179
+ <xsl:value-of select="$spanspec/@namest"/>
180
+ </xsl:when>
181
+ <xsl:otherwise>
182
+ <xsl:value-of select="$entry/@namest"/>
183
+ </xsl:otherwise>
184
+ </xsl:choose>
185
+ </xsl:variable>
186
+
187
+ <xsl:variable name="nameend">
188
+ <xsl:choose>
189
+ <xsl:when test="@spanname">
190
+ <xsl:value-of select="$spanspec/@nameend"/>
191
+ </xsl:when>
192
+ <xsl:otherwise>
193
+ <xsl:value-of select="$entry/@nameend"/>
194
+ </xsl:otherwise>
195
+ </xsl:choose>
196
+ </xsl:variable>
197
+
198
+ <xsl:variable name="scol">
199
+ <xsl:call-template name="colspec.colnum">
200
+ <xsl:with-param name="colspec"
201
+ select="($entry/ancestor::d:tgroup/d:colspec[@colname=$namest]
202
+ |$entry/ancestor::d:entrytbl/d:colspec[@colname=$namest])[last()]"/>
203
+ </xsl:call-template>
204
+ </xsl:variable>
205
+
206
+ <xsl:variable name="ecol">
207
+ <xsl:call-template name="colspec.colnum">
208
+ <xsl:with-param name="colspec"
209
+ select="($entry/ancestor::d:tgroup/d:colspec[@colname=$nameend]
210
+ |$entry/ancestor::d:entrytbl/d:colspec[@colname=$nameend])[last()]"/>
211
+ </xsl:call-template>
212
+ </xsl:variable>
213
+
214
+ <xsl:choose>
215
+ <xsl:when test="$namest != '' and $nameend != ''">
216
+ <xsl:choose>
217
+ <xsl:when test="number($ecol) &gt;= number($scol)">
218
+ <xsl:value-of select="number($ecol) - number($scol) + 1"/>
219
+ </xsl:when>
220
+ <xsl:otherwise>
221
+ <xsl:value-of select="number($scol) - number($ecol) + 1"/>
222
+ </xsl:otherwise>
223
+ </xsl:choose>
224
+ </xsl:when>
225
+ <xsl:otherwise>1</xsl:otherwise>
226
+ </xsl:choose>
227
+ </xsl:template>
228
+
229
+ <xsl:template name="calculate.rowsep">
230
+ <xsl:param name="entry" select="."/>
231
+ <xsl:param name="colnum" select="0"/>
232
+
233
+ <xsl:call-template name="inherited.table.attribute">
234
+ <xsl:with-param name="entry" select="$entry"/>
235
+ <xsl:with-param name="colnum" select="$colnum"/>
236
+ <xsl:with-param name="attribute" select="'rowsep'"/>
237
+ </xsl:call-template>
238
+ </xsl:template>
239
+
240
+ <xsl:template name="calculate.colsep">
241
+ <xsl:param name="entry" select="."/>
242
+ <xsl:param name="colnum" select="0"/>
243
+
244
+ <xsl:call-template name="inherited.table.attribute">
245
+ <xsl:with-param name="entry" select="$entry"/>
246
+ <xsl:with-param name="colnum" select="$colnum"/>
247
+ <xsl:with-param name="attribute" select="'colsep'"/>
248
+ </xsl:call-template>
249
+ </xsl:template>
250
+
251
+ <xsl:template name="inherited.table.attribute">
252
+ <xsl:param name="entry" select="."/>
253
+ <xsl:param name="row" select="$entry/ancestor-or-self::d:row[1]"/>
254
+ <xsl:param name="colnum" select="0"/>
255
+ <xsl:param name="attribute" select="'colsep'"/>
256
+
257
+ <xsl:variable name="tgroup" select="$row/parent::*/parent::d:tgroup[1]"/>
258
+ <xsl:variable name="tbody" select="$row/parent::*[1]"/>
259
+
260
+ <xsl:variable name="table" select="($tgroup/ancestor::d:table
261
+ |$tgroup/ancestor::d:informaltable
262
+ |$entry/ancestor::d:entrytbl)[last()]"/>
263
+
264
+ <xsl:variable name="entry.value">
265
+ <xsl:call-template name="get-attribute">
266
+ <xsl:with-param name="element" select="$entry"/>
267
+ <xsl:with-param name="attribute" select="$attribute"/>
268
+ </xsl:call-template>
269
+ </xsl:variable>
270
+
271
+ <xsl:variable name="row.value">
272
+ <xsl:call-template name="get-attribute">
273
+ <xsl:with-param name="element" select="$row"/>
274
+ <xsl:with-param name="attribute" select="$attribute"/>
275
+ </xsl:call-template>
276
+ </xsl:variable>
277
+
278
+ <xsl:variable name="span.value">
279
+ <xsl:if test="$entry/@spanname">
280
+ <xsl:variable name="spanname" select="$entry/@spanname"/>
281
+ <xsl:variable name="spanspec"
282
+ select="$tgroup/d:spanspec[@spanname=$spanname]"/>
283
+ <xsl:variable name="span.colspec"
284
+ select="$tgroup/d:colspec[@colname=$spanspec/@namest]"/>
285
+
286
+ <xsl:variable name="spanspec.value">
287
+ <xsl:call-template name="get-attribute">
288
+ <xsl:with-param name="element" select="$spanspec"/>
289
+ <xsl:with-param name="attribute" select="$attribute"/>
290
+ </xsl:call-template>
291
+ </xsl:variable>
292
+
293
+ <xsl:variable name="scolspec.value">
294
+ <xsl:call-template name="get-attribute">
295
+ <xsl:with-param name="element" select="$span.colspec"/>
296
+ <xsl:with-param name="attribute" select="$attribute"/>
297
+ </xsl:call-template>
298
+ </xsl:variable>
299
+
300
+ <xsl:choose>
301
+ <xsl:when test="$spanspec.value != ''">
302
+ <xsl:value-of select="$spanspec.value"/>
303
+ </xsl:when>
304
+ <xsl:when test="$scolspec.value != ''">
305
+ <xsl:value-of select="$scolspec.value"/>
306
+ </xsl:when>
307
+ <xsl:otherwise></xsl:otherwise>
308
+ </xsl:choose>
309
+ </xsl:if>
310
+ </xsl:variable>
311
+
312
+ <xsl:variable name="namest.value">
313
+ <xsl:if test="$entry/@namest">
314
+ <xsl:variable name="namest" select="$entry/@namest"/>
315
+ <xsl:variable name="colspec"
316
+ select="$tgroup/d:colspec[@colname=$namest]"/>
317
+
318
+ <xsl:variable name="inner.namest.value">
319
+ <xsl:call-template name="get-attribute">
320
+ <xsl:with-param name="element" select="$colspec"/>
321
+ <xsl:with-param name="attribute" select="$attribute"/>
322
+ </xsl:call-template>
323
+ </xsl:variable>
324
+
325
+ <xsl:choose>
326
+ <xsl:when test="$inner.namest.value">
327
+ <xsl:value-of select="$inner.namest.value"/>
328
+ </xsl:when>
329
+ <xsl:otherwise></xsl:otherwise>
330
+ </xsl:choose>
331
+ </xsl:if>
332
+ </xsl:variable>
333
+
334
+ <xsl:variable name="tgroup.value">
335
+ <xsl:call-template name="get-attribute">
336
+ <xsl:with-param name="element" select="$tgroup"/>
337
+ <xsl:with-param name="attribute" select="$attribute"/>
338
+ </xsl:call-template>
339
+ </xsl:variable>
340
+
341
+ <xsl:variable name="tbody.value">
342
+ <xsl:call-template name="get-attribute">
343
+ <xsl:with-param name="element" select="$tbody"/>
344
+ <xsl:with-param name="attribute" select="$attribute"/>
345
+ </xsl:call-template>
346
+ </xsl:variable>
347
+
348
+ <xsl:variable name="table.value">
349
+ <xsl:call-template name="get-attribute">
350
+ <xsl:with-param name="element" select="$table"/>
351
+ <xsl:with-param name="attribute" select="$attribute"/>
352
+ </xsl:call-template>
353
+ </xsl:variable>
354
+
355
+ <xsl:variable name="default.value">
356
+ <!-- This section used to say that rowsep and colsep have defaults based -->
357
+ <!-- on the frame setting. Further reflection and closer examination of the -->
358
+ <!-- CALS spec reveals I was mistaken. The default is "1" for rowsep and colsep. -->
359
+ <!-- For everything else, the default is the tgroup value -->
360
+ <xsl:choose>
361
+ <xsl:when test="$tgroup.value != ''">
362
+ <xsl:value-of select="$tgroup.value"/>
363
+ </xsl:when>
364
+ <xsl:when test="$attribute = 'rowsep'">1</xsl:when>
365
+ <xsl:when test="$attribute = 'colsep'">1</xsl:when>
366
+ <xsl:otherwise><!-- empty --></xsl:otherwise>
367
+ </xsl:choose>
368
+ </xsl:variable>
369
+
370
+ <xsl:variable name="calc.colvalue">
371
+ <xsl:if test="$colnum &gt; 0">
372
+ <xsl:call-template name="colnum.colspec">
373
+ <xsl:with-param name="colnum" select="$colnum"/>
374
+ <xsl:with-param name="attribute" select="$attribute"/>
375
+ </xsl:call-template>
376
+ </xsl:if>
377
+ </xsl:variable>
378
+
379
+ <xsl:choose>
380
+ <xsl:when test="$entry.value != ''">
381
+ <xsl:value-of select="$entry.value"/>
382
+ </xsl:when>
383
+ <xsl:when test="$row.value != ''">
384
+ <xsl:value-of select="$row.value"/>
385
+ </xsl:when>
386
+ <xsl:when test="$span.value != ''">
387
+ <xsl:value-of select="$span.value"/>
388
+ </xsl:when>
389
+ <xsl:when test="$namest.value != ''">
390
+ <xsl:value-of select="$namest.value"/>
391
+ </xsl:when>
392
+ <xsl:when test="$calc.colvalue != ''">
393
+ <xsl:value-of select="$calc.colvalue"/>
394
+ </xsl:when>
395
+ <xsl:when test="$tbody.value != ''">
396
+ <xsl:value-of select="$tbody.value"/>
397
+ </xsl:when>
398
+ <xsl:when test="$tgroup.value != ''">
399
+ <xsl:value-of select="$tgroup.value"/>
400
+ </xsl:when>
401
+ <xsl:when test="$table.value != ''">
402
+ <xsl:value-of select="$table.value"/>
403
+ </xsl:when>
404
+ <xsl:otherwise>
405
+ <xsl:value-of select="$default.value"/>
406
+ </xsl:otherwise>
407
+ </xsl:choose>
408
+ </xsl:template>
409
+
410
+ <xsl:template name="colnum.colspec">
411
+ <xsl:param name="colnum" select="0"/>
412
+ <xsl:param name="attribute" select="'colname'"/>
413
+ <xsl:param name="colspec.ancestor"
414
+ select="(ancestor::d:tgroup|ancestor::d:entrytbl)
415
+ [position() = last()]"/>
416
+ <xsl:param name="colspecs" select="$colspec.ancestor/d:colspec"/>
417
+ <xsl:param name="count" select="1"/>
418
+
419
+ <xsl:choose>
420
+ <xsl:when test="not($colspecs) or $count &gt; $colnum">
421
+ <!-- nop -->
422
+ </xsl:when>
423
+ <xsl:when test="$colspecs[1]/@colnum">
424
+ <xsl:choose>
425
+ <xsl:when test="$colspecs[1]/@colnum = $colnum">
426
+ <xsl:call-template name="get-attribute">
427
+ <xsl:with-param name="element" select="$colspecs[1]"/>
428
+ <xsl:with-param name="attribute" select="$attribute"/>
429
+ </xsl:call-template>
430
+ </xsl:when>
431
+ <xsl:otherwise>
432
+ <xsl:call-template name="colnum.colspec">
433
+ <xsl:with-param name="colnum" select="$colnum"/>
434
+ <xsl:with-param name="attribute" select="$attribute"/>
435
+ <xsl:with-param name="colspecs"
436
+ select="$colspecs[position()&gt;1]"/>
437
+ <xsl:with-param name="count"
438
+ select="$colspecs[1]/@colnum+1"/>
439
+ </xsl:call-template>
440
+ </xsl:otherwise>
441
+ </xsl:choose>
442
+ </xsl:when>
443
+ <xsl:otherwise>
444
+ <xsl:choose>
445
+ <xsl:when test="$count = $colnum">
446
+ <xsl:call-template name="get-attribute">
447
+ <xsl:with-param name="element" select="$colspecs[1]"/>
448
+ <xsl:with-param name="attribute" select="$attribute"/>
449
+ </xsl:call-template>
450
+ </xsl:when>
451
+ <xsl:otherwise>
452
+ <xsl:call-template name="colnum.colspec">
453
+ <xsl:with-param name="colnum" select="$colnum"/>
454
+ <xsl:with-param name="attribute" select="$attribute"/>
455
+ <xsl:with-param name="colspecs"
456
+ select="$colspecs[position()&gt;1]"/>
457
+ <xsl:with-param name="count" select="$count+1"/>
458
+ </xsl:call-template>
459
+ </xsl:otherwise>
460
+ </xsl:choose>
461
+ </xsl:otherwise>
462
+ </xsl:choose>
463
+ </xsl:template>
464
+
465
+ <xsl:template name="get-attribute">
466
+ <xsl:param name="element" select="."/>
467
+ <xsl:param name="attribute" select="''"/>
468
+
469
+ <xsl:for-each select="$element/@*">
470
+ <xsl:if test="local-name(.) = $attribute">
471
+ <xsl:value-of select="."/>
472
+ </xsl:if>
473
+ </xsl:for-each>
474
+ </xsl:template>
475
+
476
+ <xsl:template name="consume-row">
477
+ <xsl:param name="spans"/>
478
+
479
+ <xsl:if test="contains($spans,':')">
480
+ <xsl:value-of select="substring-before($spans,':') - 1"/>
481
+ <xsl:text>:</xsl:text>
482
+ <xsl:call-template name="consume-row">
483
+ <xsl:with-param name="spans" select="substring-after($spans,':')"/>
484
+ </xsl:call-template>
485
+ </xsl:if>
486
+ </xsl:template>
487
+
488
+ <!-- Returns the table style for the context element -->
489
+ <xsl:template name="tabstyle">
490
+ <xsl:param name="node" select="."/>
491
+
492
+ <xsl:variable name="tgroup" select="$node/d:tgroup[1] |
493
+ $node/ancestor-or-self::d:tgroup[1]"/>
494
+
495
+ <xsl:variable name="table"
496
+ select="($node/ancestor-or-self::d:table |
497
+ $node/ancestor-or-self::d:informaltable)[last()]"/>
498
+
499
+ <xsl:variable name="tabstyle">
500
+ <xsl:choose>
501
+ <xsl:when test="$table/@tabstyle != ''">
502
+ <xsl:value-of select="normalize-space($table/@tabstyle)"/>
503
+ </xsl:when>
504
+ <xsl:when test="$tgroup/@tgroupstyle != ''">
505
+ <xsl:value-of select="normalize-space($tgroup/@tgroupstyle)"/>
506
+ </xsl:when>
507
+ <xsl:otherwise>
508
+ </xsl:otherwise>
509
+ </xsl:choose>
510
+ </xsl:variable>
511
+
512
+ <xsl:value-of select="$tabstyle"/>
513
+ </xsl:template>
514
+
515
+ </xsl:stylesheet>