opale_to_hdoc_regle2.xsl 17.9 KB
Newer Older
Drain's avatar
Drain committed
1
2
3
<?xml version="1.0" encoding="UTF-8"?>

<!-- Namespaces -->
4
5
6
7
8
<xsl:stylesheet xmlns="http://www.utc.fr/ics/hdoc/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs" version="2.0" xmlns:sc="http://www.utc.fr/ics/scenari/v3/core"
    xmlns:sp="http://www.utc.fr/ics/scenari/v3/primitive" xmlns:op="utc.fr:ics/opale3">

9
10
11
    <xsl:template match="sc:item">
        <xsl:apply-templates/>
    </xsl:template>
12

Drain's avatar
Drain committed
13
14
    <!-- MODULE  -->
    <xsl:template match="op:ue">
15

Drain's avatar
Drain committed
16
17
        <!-- RNG -->
        <xsl:processing-instruction name="oxygen">
18
            RNGSchema="http://hdoc.crzt.fr/schemas/xhtml/hdoc1-xhtml.rng" type="xml"
Drain's avatar
Drain committed
19
        </xsl:processing-instruction>
20

Drain's avatar
Drain committed
21
22
        <!-- HTML -->
        <html>
23

Drain's avatar
Drain committed
24
25
26
27
            <!-- MODULE"s HEADER -->
            <head>
                <xsl:apply-templates select="op:ueM/sp:title"/>
                <meta charset="utf-8"/>
28
                <meta content="HdocConverter/Opale3.4" name="generator"/>
Drain's avatar
Drain committed
29
30
                <xsl:apply-templates select="op:ueM/sp:info"/>
            </head>
31

Drain's avatar
Drain committed
32
33
34
35
36
37
            <!-- MODULE's COMPONENTS  -->
            <body>
                <xsl:apply-templates select="child::*[name() != 'op:ueM']"/>
            </body>
        </html>
    </xsl:template>
38

Drain's avatar
Drain committed
39
40
    <!-- Information -->
    <xsl:template match="op:ueM/sp:info">
41
42
43
        <xsl:apply-templates select="op:info/sp:keywds/op:keywds/sp:keywd"/>
        <xsl:apply-templates select="op:info/sp:cc"/>
        <xsl:apply-templates select="op:info/sp:cpyrgt/op:sPara/sc:para"/>
Drain's avatar
Drain committed
44
    </xsl:template>
45

Drain's avatar
Drain committed
46
    <!-- Titles -->
Esquilax76's avatar
Esquilax76 committed
47
    <xsl:template match="op:uM/sp:title | op:expUcDivM/sp:title | op:ueDivM/sp:title | op:exeM/sp:title">
48
49
50
        <h1>
            <xsl:value-of select="."/>
        </h1>
Drain's avatar
Drain committed
51
52
    </xsl:template>
    <xsl:template match="op:ueM/sp:title">
53
54
55
        <title>
            <xsl:value-of select="."/>
        </title>
Drain's avatar
Drain committed
56
57
    </xsl:template>
    <xsl:template match="op:pbTi/sp:title">
58
59
60
        <h6>
            <xsl:value-of select="."/>
        </h6>
Drain's avatar
Drain committed
61
    </xsl:template>
62

Drain's avatar
Drain committed
63
64
    <!-- Subtitle -->
    <xsl:template match="op:uM/sp:sTitle">
65
66
67
        <h2>
            <xsl:value-of select="."/>
        </h2>
Drain's avatar
Drain committed
68
    </xsl:template>
69

Drain's avatar
Drain committed
70
71
    <!-- Liscences -->
    <xsl:template match="op:ueM/sp:info/op:info/sp:cc">
72
        <meta name="rights" content="{.}"/>
Drain's avatar
Drain committed
73
74
75
    </xsl:template>
    <xsl:template match="op:uM/sp:info/op:info/sp:cc">
        <div data-hdoc-type="rights">
76
            <xsl:value-of select="."/>
Drain's avatar
Drain committed
77
78
        </div>
    </xsl:template>
79

Drain's avatar
Drain committed
80
81
    <!-- Keywords -->
    <xsl:template match="op:ueM/sp:info/op:info/sp:keywds/op:keywds/sp:keywd">
82
        <meta name="keywords" content="{.}"/>
Drain's avatar
Drain committed
83
84
85
    </xsl:template>
    <xsl:template match="op:uM/sp:info/op:info/sp:keywds">
        <div data-hdoc-type="tags">
86
            <xsl:apply-templates select="./op:keywds/sp:keywd"/>
Drain's avatar
Drain committed
87
88
89
        </div>
    </xsl:template>
    <xsl:template match="op:uM/sp:info/op:info/sp:keywds/op:keywds/sp:keywd">
90
91
92
        <span>
            <xsl:value-of select="."/>
        </span>
Drain's avatar
Drain committed
93
    </xsl:template>
94

Drain's avatar
Drain committed
95
96
    <!-- Author -->
    <xsl:template match="op:ueM/sp:info/op:info/sp:cpyrgt/op:sPara/sc:para">
97
        <meta name="author" content="{.}"/>
Drain's avatar
Drain committed
98
99
100
    </xsl:template>
    <xsl:template match="op:uM/sp:info/op:info/sp:cpyrgt/op:sPara/sc:para">
        <div data-hdoc-type="author">
101
            <xsl:value-of select="."/>
Drain's avatar
Drain committed
102
103
        </div>
    </xsl:template>
104

105
    <!-- Division -->
106
    <xsl:template match="op:ue/sp:div | op:ueDiv/sp:div">
Esquilax76's avatar
Esquilax76 committed
107
        <section data-hdoc-type="division">
108
109
110
111
112
113
114
115
116
117
            <header>
                <xsl:apply-templates select="./op:ueDiv/op:ueDivM/sp:title"/>
                <xsl:apply-templates
                    select="./op:ueDiv/op:ueDivM/sp:info/op:info/sp:cpyrgt/op:sPara/sc:para"/>
                <xsl:apply-templates select="./op:ueDiv/op:ueDivM/sp:info/op:info/sp:cc"/>
            </header>

            <!-- check for sub-division -->
            <xsl:apply-templates select="./op:ueDiv/sp:div"/>

Esquilax76's avatar
Esquilax76 committed
118
            <!-- currently : grain & introduction & conclusion || adding "exercice redactionnel" || adding "actvite d'apprentissage" -->
119
120
121
            <xsl:apply-templates select="./op:ueDiv/sp:intro"/>
            <xsl:apply-templates select="./op:ueDiv/sp:courseUc"/>
            <xsl:apply-templates select="./op:ueDiv/sp:conclu"/>
Esquilax76's avatar
Esquilax76 committed
122
123
            <xsl:apply-templates select="./op:ueDiv/sp:practUc"/>
            <xsl:apply-templates select="./op:ueDiv/sp:courseUa"/>
124
125
126
127
128

            <footer>
                <xsl:apply-templates select="./op:ueDiv/op:ueDivM/sp:info/op:info/sp:keywds"/>
            </footer>
        </section>
129
    </xsl:template>
130

Drain's avatar
Drain committed
131
132
    <!-- Activity -->
    <xsl:template match="sp:courseUa">
Esquilax76's avatar
Esquilax76 committed
133
        <section data-hdoc-type="activity">
Drain's avatar
Drain committed
134
135
            <header>
                <xsl:apply-templates select="./op:courseUa/op:uM/sp:title"/>
136
137
                <xsl:apply-templates
                    select="./op:courseUa/op:uM/sp:info/op:info/sp:cpyrgt/op:sPara/sc:para"/>
Drain's avatar
Drain committed
138
139
                <xsl:apply-templates select="./op:courseUa/op:uM/sp:info/op:info/sp:cc"/>
            </header>
140

Drain's avatar
Drain committed
141
            <!-- currently : grain & introduction & conclusion -->
142
            <xsl:apply-templates select="./op:courseUa/sp:obj"/>
143
            <xsl:apply-templates select="./op:courseUa/sp:intro"/>
144
            <xsl:apply-templates select="./op:courseUa/sp:courseUc"/>
145
            <xsl:apply-templates select="./op:courseUa/sp:conclu"/>
146

Drain's avatar
Drain committed
147
148
            <!-- overview questions : regroup questions into a section-->
            <xsl:if test="./op:courseUa/sp:quest">
Esquilax76's avatar
Esquilax76 committed
149
                <section data-hdoc-type="synthesis">
Drain's avatar
Drain committed
150
151
152
153
154
                    <header>
                        <h1>Questions de synthèse</h1>
                    </header>
                    <!-- a conclusion has only a bloc -->
                    <div>
155
156
                        <xsl:apply-templates select="./op:courseUa/sp:quest"/>
                    </div>
Drain's avatar
Drain committed
157
158
                </section>
            </xsl:if>
159

Drain's avatar
Drain committed
160
161
            <footer>
                <xsl:apply-templates select="./op:courseUa/op:uM/sp:info/op:info/sp:keywds"/>
162
            </footer>
Drain's avatar
Drain committed
163
164
        </section>
    </xsl:template>
165

Drain's avatar
Drain committed
166
167
    <!-- Grain -->
    <xsl:template match="sp:courseUc">
Esquilax76's avatar
Esquilax76 committed
168
        <section data-hdoc-type="grain">
Drain's avatar
Drain committed
169
170
            <header>
                <xsl:apply-templates select="./op:expUc/op:uM/sp:title"/>
171
172
                <xsl:apply-templates
                    select="./op:expUc/op:uM/sp:info/op:info/sp:cpyrgt/op:sPara/sc:para"/>
Drain's avatar
Drain committed
173
174
                <xsl:apply-templates select="./op:expUc/op:uM/sp:info/op:info/sp:cc"/>
            </header>
175
176

            <!-- call for blocs -->
177
            <xsl:apply-templates select="./op:expUc/sp:pb/op:pb/*"/>
178
179
180
181

            <!-- call for parts -->
            <xsl:apply-templates select="./op:expUc/sp:div"/>

Drain's avatar
Drain committed
182
183
            <footer>
                <xsl:apply-templates select="./op:expUc/op:uM/sp:info/op:info/sp:keywds"/>
184
            </footer>
Drain's avatar
Drain committed
185
186
        </section>
    </xsl:template>
187

188
189
    <!-- Aims (aims don't have metadata) -->
    <xsl:template match="sp:obj">
Esquilax76's avatar
Esquilax76 committed
190
        <section data-hdoc-type="aims">
191
192
193
194
195
            <header>
                <h1>Objectifs</h1>
            </header>
            <div>
                <xsl:apply-templates select="./op:sTxt/*"/>
196
            </div>
197
198
        </section>
    </xsl:template>
199

Drain's avatar
Drain committed
200
201
202
203
204
205
206
207
208
    <!-- Introduction (a introduction doesn't have metadata) -->
    <xsl:template match="sp:intro">
        <section data-hdoc-type="introduction">
            <header>
                <h1>Introduction</h1>
            </header>
            <!-- a introduction has only a bloc -->
            <div>
                <xsl:apply-templates select="./op:res/*"/>
209
            </div>
Drain's avatar
Drain committed
210
211
        </section>
    </xsl:template>
212

Drain's avatar
Drain committed
213
214
215
216
217
218
219
220
221
    <!-- Conclusion (a conclusion doesn't have metadata) -->
    <xsl:template match="sp:conclu">
        <section data-hdoc-type="conclusion">
            <header>
                <h1>Conclusion</h1>
            </header>
            <!-- a conclusion has only a bloc -->
            <div>
                <xsl:apply-templates select="./op:res/*"/>
222
            </div>
Drain's avatar
Drain committed
223
224
        </section>
    </xsl:template>
225

226
227
228
229
230
    <xsl:template match="sp:filtered">
        <xsl:if test="op:filter/sp:exclude/text() = 'short'">
            <xsl:apply-templates select="./op:res/*"/>
        </xsl:if>
    </xsl:template>
231

Drain's avatar
Drain committed
232
233
234
235
    <!-- Overview questions (fr : question de synthèse) -->
    <xsl:template match="sp:quest">
        <xsl:apply-templates select="./op:txt/*"/>
    </xsl:template>
236

Drain's avatar
Drain committed
237
    <!-- Parts (of a Grain) -->
238
    <xsl:template match="op:expUc/sp:div | op:expUcDiv/sp:div">
Esquilax76's avatar
Esquilax76 committed
239
        <section data-hdoc-type="part">
Drain's avatar
Drain committed
240
241
242
243
            <header>
                <!-- only title - parts don't have other metadata -->
                <xsl:apply-templates select="./op:expUcDiv/op:expUcDivM/sp:title"/>
            </header>
244
245
246
247
248
249
250

            <!-- call for blocs -->
            <xsl:apply-templates select="./op:expUcDiv/sp:pb/op:pb/*"/>

            <!-- call for parts -->
            <xsl:apply-templates select="./op:expUcDiv/sp:div"/>

Drain's avatar
Drain committed
251
252
        </section>
    </xsl:template>
Esquilax76's avatar
Esquilax76 committed
253
254
255
256
257
258
259
    
    <!-- "Exercice redactionnel" -->
    <xsl:template match="sp:practUc">
        <section data-hdoc-type="exercise">
            <header>
                <xsl:apply-templates select="op:practUc/op:exeM/sp:title"/>
            </header>
260
261
			<xsl:apply-templates select="op:practUc/sp:desc"/>
			<xsl:apply-templates select="op:practUc/sp:quest"/>
Esquilax76's avatar
Esquilax76 committed
262
263
264
        </section>
    </xsl:template>
    
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
	<xsl:template match="op:practUc/sp:desc">
        <div data-hdoc-type="description">
			<xsl:value-of select="*"/>
		</div>
    </xsl:template>
	
	<xsl:template match="op:practUc/sp:quest">
        <div data-hdoc-type="question">
			<div data-hdoc-type="description">
				<xsl:value-of select="op:practUcQ/sp:desc/*"/>
			</div>
			<xsl:if test="op:practUcQ/sp:sol">
				<div data-hdoc-type="solution">
					<xsl:value-of select="op:practUcQ/sp:sol/*"/>
				</div>
			</xsl:if>
		</div>
    </xsl:template>
283

Drain's avatar
Drain committed
284
    <!-- ***** BLOCS START ***** -->
285

286
    <xsl:template match="sp:res[op:resInfoM/sp:index/text() = 'img']">
287
        <xsl:variable name="name" select="tokenize(@sc:refUri, '/')[last()]"/>
288
289
        <img src="re/{$name}" alt="{$name}"/>
    </xsl:template>
290

291
    <xsl:template match="sp:res[op:resInfoM/sp:index/text() = 'graph']">
292
        <xsl:variable name="name" select="tokenize(@sc:refUri, '/')[last()]"/>
293
294
        <object data="re/{$name}" type="application/vnd.oasis.opendocument.graphics"/>
    </xsl:template>
295

296
    <xsl:template match="sp:res[op:resInfoM/sp:index/text() = 'tab']">
297
        <xsl:variable name="name" select="tokenize(@sc:refUri, '/')[last()]"/>
298
        <object data="re/{$name}" type="application/vnd.oasis.opendocument.spreadsheet"/>
299
    </xsl:template> 
300

Drain's avatar
Drain committed
301
302
303
    <!-- content Information : no microformat -->
    <xsl:template match="sp:pb/op:pb/sp:info">
        <div>
304
305
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
306
307
308
309
310
        </div>
    </xsl:template>
    <!-- content definition : definition -->
    <xsl:template match="sp:pb/op:pb/sp:def">
        <div data-hdoc-type="definition">
311
312
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
313
314
315
316
317
        </div>
    </xsl:template>
    <!-- content example : example -->
    <xsl:template match="sp:pb/op:pb/sp:ex">
        <div data-hdoc-type="example">
318
319
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
320
321
322
323
324
        </div>
    </xsl:template>
    <!-- content remark : remark -->
    <xsl:template match="sp:pb/op:pb/sp:rem">
        <div data-hdoc-type="remark">
325
326
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
327
328
329
330
331
        </div>
    </xsl:template>
    <!-- content advice : advice -->
    <xsl:template match="sp:pb/op:pb/sp:adv">
        <div data-hdoc-type="advice">
332
333
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
334
335
336
337
338
        </div>
    </xsl:template>
    <!-- content warning : warning -->
    <xsl:template match="sp:pb/op:pb/sp:warning">
        <div data-hdoc-type="warning">
339
340
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
341
342
343
344
345
        </div>
    </xsl:template>
    <!-- content complement : complement -->
    <xsl:template match="sp:pb/op:pb/sp:comp">
        <div data-hdoc-type="complement">
346
347
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
348
349
350
351
352
        </div>
    </xsl:template>
    <!-- content method : advice -->
    <xsl:template match="sp:pb/op:pb/sp:meth">
        <div data-hdoc-type="advice">
353
354
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
355
356
357
358
359
        </div>
    </xsl:template>
    <!-- contenu review : complement -->
    <xsl:template match="sp:pb/op:pb/sp:remind">
        <div data-hdoc-type="complement">
360
361
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
362
363
364
365
366
        </div>
    </xsl:template>
    <!-- content fondamental : emphasis -->
    <xsl:template match="sp:pb/op:pb/sp:basic">
        <div data-hdoc-type="emphasis">
367
368
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
369
370
        </div>
    </xsl:template>
371

Drain's avatar
Drain committed
372
373
374
    <!-- content syntax : no microformat (we lose this information) -->
    <xsl:template match="sp:pb/op:pb/sp:syntax">
        <div>
375
376
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
377
378
379
380
381
        </div>
    </xsl:template>
    <!-- content legal :  no microformat (we lose this information) -->
    <xsl:template match="sp:pb/op:pb/sp:legal">
        <div>
382
383
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
384
385
386
387
388
        </div>
    </xsl:template>
    <!-- content simulation :  no microformat (we lose this information) -->
    <xsl:template match="sp:pb/op:pb/sp:simul">
        <div>
389
390
            <xsl:apply-templates select="./op:pbTi/sp:title"/>
            <xsl:apply-templates select="op:res/*"/>
Drain's avatar
Drain committed
391
392
        </div>
    </xsl:template>
393

Drain's avatar
Drain committed
394
    <!-- ***** BLOCS END ***** -->
395

Drain's avatar
Drain committed
396
    <!-- ***** TEXT START ***** -->
397

Drain's avatar
Drain committed
398
399
    <!-- Simple text -->
    <xsl:template match="op:res/sp:txt">
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
        <xsl:apply-templates select="./op:txt/*"/>
    </xsl:template>

    <!-- Paragraph -->
    <xsl:template match="sc:para">
        <p>
            <xsl:apply-templates select="./* | ./text()"/>
        </p>
    </xsl:template>

    <!-- ***** PARAGRAPH ITEMS START ***** -->

    <!-- citation -->
    <xsl:template match="sc:para/sc:inlineStyle[@role='quote']" priority="2">
        <q>
            <xsl:value-of select="."/>
        </q>
    </xsl:template>
    <!-- important -->
    <xsl:template match="sc:para/sc:inlineStyle[@role='emp']" priority="2">
        <em>
            <xsl:value-of select="."/>
        </em>
    </xsl:template>
    <!-- foreign term -->
    <xsl:template match="sc:para/sc:inlineStyle[@role='spec']" priority="2">
        <i>
            <xsl:value-of select="."/>
        </i>
    </xsl:template>
    <!-- syntax -->
    <xsl:template match="sc:para/sc:inlineStyle[@role='code']" priority="2">
        <span data-hdoc-type="syntax">
            <xsl:value-of select="."/>
        </span>
    </xsl:template>

    <xsl:template match="sc:para/sc:uLink" priority="2">
        <xsl:value-of select="."/>
    </xsl:template>
    <!-- exponent -->
    <xsl:template match="sc:para/sc:textLeaf[@role='exp']" priority="2">
        <sup>
            <xsl:value-of select="."/>
        </sup>
    </xsl:template>
    <!-- subscript -->
    <xsl:template match="sc:para/sc:textLeaf[@role='ind']" priority="2">
        <sub>
            <xsl:value-of select="."/>
        </sub>
    </xsl:template>
    <!-- latex -->
    <xsl:template match="sc:para/sc:textLeaf[@role='mathtex']" priority="2">
        <span data-hdoc-type="latex">
            <xsl:value-of select="."/>
        </span>
    </xsl:template>
    <!-- default behaviour for other balises -->
    <xsl:template match="sc:para/sc:inlineStyle|sc:para/sc:textLeaf" priority="1">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="sc:para/sc:phrase[@role='url']">
        <xsl:apply-templates select="op:urlM/sp:url"/>
    </xsl:template>

    <xsl:template match="op:urlM/sp:url">
        <a href="{text()}">
            <xsl:value-of select="text()"/>
        </a>
    </xsl:template>

    <!-- ***** PARAGRAPH ITEMS END ***** -->

    <!-- List-->
    <xsl:template match="sc:itemizedList">
        <ul>
            <xsl:apply-templates select="./sc:listItem"/>
        </ul>
    </xsl:template>

    <!-- Ordered list -->
    <xsl:template match="sc:orderedList">
        <ol>
            <xsl:apply-templates select="./sc:listItem"/>
        </ol>
    </xsl:template>

    <!-- ***** LIST ITEMS START ***** -->

    <!-- List item -->
    <xsl:template match="sc:listItem">
        <li>
            <xsl:apply-templates select="./*"/>
        </li>
    </xsl:template>

    <!-- ***** LIST ITEMS END ***** -->

    <!-- Table -->
    <xsl:template match="sc:table">
        <table>
            <xsl:apply-templates select="./*"/>
        </table>
    </xsl:template>

    <!-- ***** TABLE ITEMS START ***** -->

    <!-- caption -->
    <xsl:template match="sc:table/sc:caption">
        <caption>
            <xsl:value-of select="."/>
        </caption>
    </xsl:template>
    <!-- table row -->
    <xsl:template match="sc:table/sc:row">
        <tr>
            <xsl:apply-templates select="./*"/>
        </tr>
    </xsl:template>
    <!-- table cell -->
    <xsl:template match="sc:table/sc:row/sc:cell">
        <td>
            <xsl:apply-templates select="./*"/>
        </td>
    </xsl:template>

    <!-- ***** TABLE ITEMS END ***** -->

Drain's avatar
Drain committed
530
    <!-- ***** TEXT END ***** -->
531

532
533
    <xsl:template match="op:res/sp:listing">
        <p>
534
            <xsl:value-of select="./op:code/sc:code"/>
535
536
        </p>
    </xsl:template>
537
538
539

    <xsl:template match="*"/>

Drain's avatar
Drain committed
540
</xsl:stylesheet>