removed obsolete issues (many of them fixed with AE)
[docutils.git] / sandbox / paultremblay / rst_to_docbook / data / xslt_stylesheets / reStructure_to_docbook.xsl
blobec76bdd038e9b0d2f1f526732e87062a07043c18
1 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
2 <!--
4 This template changed a XML document that has already been processed by docutils
5 with the filed names template to docbook.
7 -->
10 <xsl:output method='xml' doctype-system='/home/paul/Documents/data/dtds/docbookx.dtd'/>
13 <xsl:template match = "document">
14 <article>
15 <articleinfo>
16 <xsl:apply-templates select = "/document/docinfo/author"/>
17 <xsl:choose>
18 <xsl:when test='/document/title'>
19 <xsl:apply-templates select = '/document/title' mode = 'keep'/>
20 </xsl:when>
21 <xsl:when test = '/document/docinfo/title'>
22 <xsl:apply-templates select = '/document/docinfo/title'/>
23 </xsl:when>
24 </xsl:choose>
27 <xsl:if test = "/document/docinfo/revision">
28 <revhistory>
29 <xsl:apply-templates select = "/document/docinfo/revision"/>
30 </revhistory>
31 </xsl:if>
34 </articleinfo>
35 <xsl:apply-templates/>
36 </article>
37 </xsl:template>
40 <xsl:template match = "/document/docinfo/author">
41 <author>
42 <xsl:apply-templates/>
43 </author>
44 </xsl:template>
46 <xsl:template match = "/document/docinfo/author/firstname|/document/docinfo/author/first">
47 <firstname>
48 <xsl:apply-templates/>
49 </firstname>
50 </xsl:template>
53 <xsl:template match = "/document/docinfo/author/surname">
54 <surname>
55 <xsl:apply-templates/>
56 </surname>
57 </xsl:template>
59 <xsl:template match = "/document/docinfo/author/address|/document/docinfo/author/email">
60 <email>
61 <xsl:apply-templates/>
62 </email>
63 </xsl:template>
65 <xsl:template match = "/document/docinfo/author/firstname/paragraph|/document/docinfo/author/surname/paragraph|document/docinfo/author/address/paragraph|/document/docinfo/author/first/paragraph|/document/docinfo/author/email/paragraph|/document/docinfo/author/address/pararaph">
66 <xsl:apply-templates/>
67 </xsl:template>
70 <xsl:template match = "/document/docinfo/author/email/paragraph/reference|/document/docinfo/author/address/reference">
71 <xsl:apply-templates/>
72 </xsl:template>
74 <xsl:template match = "/document/docinfo/revision">
75 <revision>
76 <xsl:apply-templates/>
77 </revision>
78 </xsl:template>
80 <xsl:template match = "revremark/paragraph">
81 <xsl:apply-templates/>
82 </xsl:template>
86 <!--info to delte-->
87 <xsl:template match = "docinfo"/>
88 <xsl:template match = "/document/title"/>
89 <xsl:template match = "system_message"/>
90 <xsl:template match = "literal"/>
91 <xsl:template match = "substitution_definition"/>
92 <xsl:template match = "transition"/>
93 <xsl:template match = "substitution_definition"/>
94 <xsl:template match = "system_warning"/>
97 <!--Info to get rid of paragraph tags-->
98 <xsl:template match = "p/paragraph|foreName/paragraph|surname/paragraph">
99 <xsl:apply-templates/>
100 </xsl:template>
102 <xsl:template match = "/document/docinfo/author">
103 <author>
104 <xsl:apply-templates/>
105 </author>
106 </xsl:template>
108 <xsl:template match = "/document/docinfo/revnumber">
109 <revnumber>
110 <xsl:apply-templates/>
111 </revnumber>
112 </xsl:template>
114 <xsl:template match = "/document/docinfo/revision/revnumber/paragraph">
115 <xsl:apply-templates/>
116 </xsl:template>
118 <xsl:template match = "/document/docinfo/revision/date">
119 <date>
120 <xsl:apply-templates/>
121 </date>
122 </xsl:template>
125 <xsl:template match = "document/docinfo/revision/date/paragraph">
126 <xsl:apply-templates/>
127 </xsl:template>
129 <xsl:template match = "/document/docinfo/revision/date_bogus">
130 <xsl:call-template name = 'my-date'/>
131 <!--
132 <date>
133 <xsl:apply-templates/>
134 </date>
136 <respStmt>
137 <resp>written by</resp>
138 <name>
139 Paul Tremblay
140 </name>
141 </respStmt>
142 </xsl:template>
143 <xsl:template match = "/document/docinfo/item">
144 <item>
145 <xsl:apply-templates/>
146 </item>
147 </xsl:template>
149 <xsl:template match = "paragraph">
150 <xsl:choose>
151 <xsl:when test = "preceding-sibling::*[1]/self::transition">
153 <!--
154 <xsl:when test = "name(preceding-sibling::*[1])='transition'">
156 <para role="transition">
157 <xsl:apply-templates/>
158 </para>
159 </xsl:when>
160 <xsl:otherwise>
161 <para>
162 <xsl:apply-templates/>
163 </para>
164 </xsl:otherwise>
165 </xsl:choose>
166 </xsl:template>
168 <xsl:template match = 'l/paragraph'>
169 <xsl:apply-templates/>
170 </xsl:template>
172 <!--examples-->
174 <xsl:template match = "example[@program]">
175 <example>
176 <xsl:apply-templates/>
177 </example>
178 </xsl:template>
179 <xsl:template match = "example/title/paragraph">
180 <xsl:apply-templates/>
181 </xsl:template>
183 <xsl:template match = "example[@program]/literal_block">
184 <programlisting>
185 <xsl:apply-templates/>
186 </programlisting>
187 </xsl:template>
189 <xsl:template match = "literal_block">
190 <literallayout>
191 <xsl:apply-templates/>
192 </literallayout>
193 </xsl:template>
196 <xsl:template match = "/document/docinfo/title|/document/title" mode = 'keep'>
197 <title>
198 <xsl:apply-templates/>
199 </title>
200 </xsl:template>
202 <xsl:template match = "section">
203 <xsl:element name = "sect1">
204 <xsl:attribute name = 'id'>
205 <xsl:value-of select = '@id'/>
206 </xsl:attribute>
207 <xsl:apply-templates/>
208 </xsl:element>
209 </xsl:template>
212 <xsl:template match = "section/section">
213 <xsl:element name = "sect2">
214 <xsl:attribute name = 'id'>
215 <xsl:value-of select = '@id'/>
216 </xsl:attribute>
217 <xsl:attribute name = "type">
218 <xsl:value-of select = "@name"/>
219 </xsl:attribute>
220 <xsl:apply-templates/>
221 </xsl:element>
222 </xsl:template>
224 <xsl:template match = "section/section/section">
225 <xsl:element name = "sect3">
226 <xsl:attribute name = 'id'>
227 <xsl:value-of select = '@id'/>
228 </xsl:attribute>
229 <xsl:attribute name = "type">
230 <xsl:value-of select = "@name"/>
231 </xsl:attribute>
232 <xsl:apply-templates/>
233 </xsl:element>
234 </xsl:template>
236 <xsl:template match = "section/section/section/section">
237 <xsl:element name = "sect4">
238 <xsl:attribute name = 'id'>
239 <xsl:value-of select = '@id'/>
240 </xsl:attribute>
241 <xsl:attribute name = "type">
242 <xsl:value-of select = "@name"/>
243 </xsl:attribute>
244 <xsl:apply-templates/>
245 </xsl:element>
246 </xsl:template>
248 <xsl:template match = "section/section/section/section/section">
249 <xsl:element name = "sect5">
250 <xsl:attribute name = 'id'>
251 <xsl:value-of select = '@id'/>
252 </xsl:attribute>
253 <xsl:attribute name = "type">
254 <xsl:value-of select = "@name"/>
255 </xsl:attribute>
256 <xsl:apply-templates/>
257 </xsl:element>
258 </xsl:template>
260 <xsl:template match="section/title">
261 <title>
262 <xsl:apply-templates/>
263 </title>
264 </xsl:template>
266 <xsl:template match = 'reference'>
267 <xsl:element name = "ref">
268 <xsl:attribute name = "target">
269 <xsl:value-of select = "@refid"/>
270 </xsl:attribute>
271 <xsl:apply-templates/>
272 </xsl:element>
273 </xsl:template>
275 <xsl:template match = 'target'>
276 <xsl:element name= "anchor">
277 <xsl:attribute name = "id">
278 <xsl:value-of select = "@id"/>
279 </xsl:attribute>
280 </xsl:element>
281 <xsl:apply-templates/>
282 </xsl:template>
284 <xsl:template match = "instant">
285 <dateline>
286 <date>
287 <xsl:value-of select = "substring(.,0,11)"/>
288 </date>
289 <xsl:element name = "time">
290 <xsl:attribute name = "value">
291 <xsl:value-of select = "substring(.,12,8)"/>
292 </xsl:attribute>
293 <xsl:attribute name = 'zone'>
294 <xsl:choose>
295 <xsl:when test = 'substring(normalize-space(.),20,6)'>
296 <xsl:value-of select = 'substring(normalize-space(.),20,6)'/>
297 </xsl:when>
298 <xsl:otherwise>
299 <xsl:text>-05:00</xsl:text>
300 </xsl:otherwise>
301 </xsl:choose>
302 </xsl:attribute>
303 <xsl:attribute name = "type">
304 <xsl:text>24hour</xsl:text>
305 </xsl:attribute>
306 </xsl:element>
307 </dateline>
308 </xsl:template>
310 <xsl:template name = "my-date">
311 <xsl:element name = 'date'>
312 <xsl:attribute name = 'value'>
313 <xsl:value-of select = "substring(normalize-space(.),0,11)"/>
314 </xsl:attribute>
315 </xsl:element>
316 </xsl:template>
318 <!--This is just and example of how to parse time?-->
319 <xsl:template name = "my-time">
320 <test>
321 <xsl:value-of select='normalize-space(.)'/>
322 </test>
323 <xsl:element name = 'date'>
324 <xsl:attribute name = 'value'>
325 <xsl:value-of select = "substring(normalize-space(.),0,11)"/>
326 </xsl:attribute>
327 <xsl:attribute name = 'zone'>
328 <xsl:choose>
329 <xsl:when test = 'substring(normalize-space(.),12,13)'>
330 <xsl:value-of select = 'substring(normalize-space(.),12,5)'/>
331 </xsl:when>
332 <xsl:otherwise>
333 <xsl:text>-05:00</xsl:text>
334 </xsl:otherwise>
335 </xsl:choose>
336 </xsl:attribute>
337 <xsl:attribute name = "type">
338 <xsl:text>24hour</xsl:text>
339 </xsl:attribute>
340 </xsl:element>
341 </xsl:template>
342 <xsl:template match = 'body'>
343 <text>
344 <body>
345 <xsl:apply-templates/>
346 </body>
347 </text>
348 </xsl:template>
350 <xsl:template match = 'block_quote'>
351 <q rend = "block">
352 <xsl:apply-templates/>
353 </q>
354 </xsl:template>
356 <xsl:template match = "comment">
357 <xsl:comment>
358 <xsl:value-of select = "."/>
359 </xsl:comment>
360 </xsl:template>
362 <xsl:template match = "emphasis">
363 <emph>
364 <xsl:apply-templates/>
365 </emph>
366 </xsl:template>
368 <xsl:template match = "enumerated_list">
369 <list type="ordered">
370 <xsl:apply-templates/>
371 </list>
372 </xsl:template>
374 <xsl:template match = "list_item">
375 <item>
376 <xsl:apply-templates/>
377 </item>
378 </xsl:template>
381 <xsl:template match="@*|node()">
382 <xsl:copy>
383 <xsl:apply-templates select="@*|node()"/>
384 </xsl:copy>
385 </xsl:template>
387 </xsl:stylesheet>