xref: /trunk/main/sd/xsl/effect.xsl (revision 4ee0f98c)
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3				xmlns:office="urn:oasis:names:tc:openoffice:xmlns:office:1.0"
4				xmlns:style="urn:oasis:names:tc:openoffice:xmlns:style:1.0"
5				xmlns:text="urn:oasis:names:tc:openoffice:xmlns:text:1.0"
6				xmlns:table="urn:oasis:names:tc:openoffice:xmlns:table:1.0"
7				xmlns:draw="urn:oasis:names:tc:openoffice:xmlns:drawing:1.0"
8				xmlns:fo="http://www.w3.org/1999/XSL/Format"
9				xmlns:xlink="http://www.w3.org/1999/xlink"
10				xmlns:dc="http://purl.org/dc/elements/1.1/"
11				xmlns:meta="urn:oasis:names:tc:openoffice:xmlns:meta:1.0"
12				xmlns:number="urn:oasis:names:tc:openoffice:xmlns:datastyle:1.0"
13				xmlns:pres="urn:oasis:names:tc:openoffice:xmlns:presentation:1.0"
14				xmlns:svg="http://www.w3.org/2000/svg"
15				xmlns:chart="urn:oasis:names:tc:openoffice:xmlns:chart:1.0"
16				xmlns:dr3d="urn:oasis:names:tc:openoffice:xmlns:dr3d:1.0"
17				xmlns:math="http://www.w3.org/1998/Math/MathML"
18				xmlns:form="urn:oasis:names:tc:openoffice:xmlns:form:1.0"
19				xmlns:script="urn:oasis:names:tc:openoffice:xmlns:script:1.0"
20				xmlns:ooo="http://openoffice.org/2004/office"
21				xmlns:ooow="http://openoffice.org/2004/writer"
22				xmlns:oooc="http://openoffice.org/2004/calc"
23				xmlns:dom="http://www.w3.org/2001/xml-events"
24				xmlns:smil="http://www.w3.org/2001/SMIL20"
25				xmlns:anim="urn:oasis:names:tc:openoffice:xmlns:animation:1.0"
26
27                version="1.0">
28
29  <!-- fly in -->
30  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-fly-in']">
31    <anim:par pres:preset-property="Direction;Accelerate;Decelerate">
32      <xsl:apply-templates select="*|@*|text()"/>
33    </anim:par>
34  </xsl:template>
35
36  <!-- fade in an swivel -->
37  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-fade-in-and-swivel']">
38    <anim:iterate pres:text-only="true">
39      <xsl:apply-templates select="*|@*|text()"/>
40    </anim:iterate>
41  </xsl:template>
42
43  <!-- falling in -->
44  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-falling-in']">
45    <anim:iterate pres:text-only="true">
46      <xsl:apply-templates select="*|@*|text()"/>
47    </anim:iterate>
48  </xsl:template>
49
50  <!-- Unfold -->
51  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-unfold']">
52    <anim:iterate pres:text-only="true">
53      <xsl:apply-templates select="*|@*|text()"/>
54    </anim:iterate>
55  </xsl:template>
56
57  <!-- Unfold -->
58  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-unfold']">
59    <anim:iterate pres:text-only="true">
60      <xsl:apply-templates select="*|@*|text()"/>
61    </anim:iterate>
62  </xsl:template>
63
64  <!-- turn and grow -->
65  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-turn-and-grow']">
66    <anim:iterate pres:text-only="true">
67      <xsl:apply-templates select="*|@*|text()"/>
68    </anim:iterate>
69  </xsl:template>
70
71  <!-- fold -->
72  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-fold']">
73    <anim:par pres:text-only="true">
74      <xsl:apply-templates select="*|@*|text()"/>
75    </anim:par>
76  </xsl:template>
77
78  <!-- whip -->
79  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-whip']">
80    <anim:iterate pres:text-only="true">
81      <xsl:apply-templates select="*|@*|text()"/>
82    </anim:iterate>
83  </xsl:template>
84
85  <!-- flip -->
86  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-flip']">
87    <anim:iterate pres:text-only="true">
88      <xsl:apply-templates select="*|@*|text()"/>
89    </anim:iterate>
90  </xsl:template>
91
92  <!-- swish -->
93  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-swish']">
94    <anim:iterate pres:text-only="true">
95      <xsl:apply-templates select="*|@*|text()"/>
96    </anim:iterate>
97  </xsl:template>
98
99  <!-- blinds -->
100  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-venetian-blinds']">
101    <anim:par pres:preset-property="Direction">
102      <xsl:apply-templates select="*|@*|text()"/>
103    </anim:par>
104  </xsl:template>
105
106  <!-- box -->
107  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-box']">
108    <anim:par pres:preset-property="Direction">
109      <xsl:apply-templates select="*|@*|text()"/>
110    </anim:par>
111  </xsl:template>
112
113  <!-- checkerboard -->
114  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-checkerboard']">
115    <anim:par pres:preset-property="Direction">
116      <xsl:apply-templates select="*|@*|text()"/>
117    </anim:par>
118  </xsl:template>
119
120  <!-- circle -->
121  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-circle']">
122    <anim:par pres:preset-property="Direction">
123      <xsl:apply-templates select="*|@*|text()"/>
124    </anim:par>
125  </xsl:template>
126
127  <!-- crawl in -->
128  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-fly-in-slow']">
129    <anim:par pres:preset-property="Direction">
130      <xsl:apply-templates select="*|@*|text()"/>
131    </anim:par>
132  </xsl:template>
133
134  <!-- diamond -->
135  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-diamond']">
136    <anim:par pres:preset-property="Direction">
137      <xsl:apply-templates select="*|@*|text()"/>
138    </anim:par>
139  </xsl:template>
140
141  <!-- peek in -->
142  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-peek-in']">
143    <anim:par pres:preset-property="Direction">
144      <xsl:apply-templates select="*|@*|text()"/>
145    </anim:par>
146  </xsl:template>
147
148  <!-- plus -->
149  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-plus']">
150    <anim:par pres:preset-property="Direction">
151      <xsl:apply-templates select="*|@*|text()"/>
152    </anim:par>
153  </xsl:template>
154
155  <!-- random bars -->
156  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-random-bars']">
157    <anim:par pres:preset-property="Direction">
158      <xsl:apply-templates select="*|@*|text()"/>
159    </anim:par>
160  </xsl:template>
161
162  <!-- split -->
163  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-split']">
164    <anim:par pres:preset-property="Direction">
165      <xsl:apply-templates select="*|@*|text()"/>
166    </anim:par>
167  </xsl:template>
168
169  <!-- strips -->
170  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-diagonal-squares']">
171    <anim:par pres:preset-property="Direction">
172      <xsl:apply-templates select="*|@*|text()"/>
173    </anim:par>
174  </xsl:template>
175
176  <!-- wheel -->
177  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-wheel']">
178    <anim:par pres:preset-property="Spokes">
179      <xsl:apply-templates select="*|@*|text()"/>
180    </anim:par>
181  </xsl:template>
182
183  <!-- whipe -->
184  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-wipe']">
185    <anim:par pres:preset-property="Direction">
186      <xsl:apply-templates select="*|@*|text()"/>
187    </anim:par>
188  </xsl:template>
189
190  <!-- color typewriter -->
191  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-entrance-colored-lettering']">
192    <anim:iterate pres:preset-property="Color1;Color2" pres:text-only="true">
193      <xsl:apply-templates select="*|@*|text()"/>
194    </anim:iterate>
195  </xsl:template>
196
197  <!-- stretch -->
198  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-stretchy']">
199    <anim:par pres:preset-property="Direction">
200      <xsl:apply-templates select="*|@*|text()"/>
201    </anim:par>
202  </xsl:template>
203
204  <!-- zoom -->
205  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-zoom']">
206    <anim:par pres:preset-property="Zoom">
207      <xsl:apply-templates select="*|@*|text()"/>
208    </anim:par>
209  </xsl:template>
210
211  <!-- swivel -->
212  <xsl:template match="anim:par[@pres:preset-id = 'ooo-entrance-swivel']">
213    <anim:par pres:preset-property="Direction">
214      <xsl:apply-templates select="*|@*|text()"/>
215    </anim:par>
216  </xsl:template>
217
218<!-- emphasis -->
219
220  <!-- change fill color -->
221  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-fill-color']">
222    <anim:par pres:preset-property="FillColor;ColorStyle;Accelerate;Decelerate;AutoReverse">
223      <xsl:apply-templates select="*|@*|text()"/>
224    </anim:par>
225  </xsl:template>
226
227  <!-- change font -->
228  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-font']">
229    <anim:par pres:preset-property="FontStyle" pres:text-only="true">
230      <xsl:apply-templates select="*|@*|text()"/>
231    </anim:par>
232  </xsl:template>
233
234  <!-- change font color -->
235  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-font-color']">
236    <anim:par pres:preset-property="CharColor;ColorStyle;Accelerate;Decelerate;AutoReverse" pres:text-only="true">
237      <xsl:apply-templates select="*|@*|text()"/>
238    </anim:par>
239  </xsl:template>
240
241  <!-- change font size -->
242  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-font-size']">
243    <anim:par pres:preset-property="CharHeight" pres:text-only="true">
244      <xsl:apply-templates select="*|@*|text()"/>
245    </anim:par>
246  </xsl:template>
247
248  <!-- change font style -->
249  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-font-style']">
250    <anim:par pres:preset-property="CharDecoration" pres:text-only="true">
251      <xsl:apply-templates select="*|@*|text()"/>
252    </anim:par>
253  </xsl:template>
254
255  <!-- change line color -->
256  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-line-color']">
257    <anim:par pres:preset-property="LineColor;ColorStyle;Accelerate;Decelerate;AutoReverse">
258      <xsl:apply-templates select="*|@*|text()"/>
259    </anim:par>
260  </xsl:template>
261
262  <!-- grow/shrink -->
263  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-grow-and-shrink']">
264    <anim:par pres:preset-property="Scale;Accelerate;Decelerate;AutoReverse">
265      <xsl:apply-templates select="*|@*|text()"/>
266    </anim:par>
267  </xsl:template>
268
269  <!-- spin -->
270  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-spin']">
271    <anim:par pres:preset-property="Rotate;Accelerate;Decelerate;AutoReverse">
272      <xsl:apply-templates select="*|@*|text()"/>
273    </anim:par>
274  </xsl:template>
275
276  <!-- Transparency -->
277  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-transparency']">
278    <anim:par pres:preset-property="Transparency">
279      <xsl:apply-templates select="*|@*|text()"/>
280    </anim:par>
281  </xsl:template>
282
283  <!-- brush on color -->
284  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-color-over-by-word']">
285    <anim:iterate pres:preset-property="Color" pres:text-only="true">
286      <xsl:apply-templates select="*|@*|text()"/>
287    </anim:iterate>
288  </xsl:template>
289
290  <!-- color blend -->
291  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-color-blend']">
292    <anim:par pres:preset-property="Color">
293      <xsl:apply-templates select="*|@*|text()"/>
294    </anim:par>
295  </xsl:template>
296
297  <!-- color wave -->
298  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-color-over-by-letter']">
299    <anim:iterate pres:preset-property="Color" pres:text-only="true">
300      <xsl:apply-templates select="*|@*|text()"/>
301    </anim:iterate>
302  </xsl:template>
303
304  <!-- bold flash -->
305  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-bold-flash']">
306    <anim:par pres:text-only="true">
307      <xsl:apply-templates select="*|@*|text()"/>
308    </anim:par>
309  </xsl:template>
310
311  <!-- reveal underline -->
312  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-reveal-underline']">
313    <anim:iterate pres:text-only="true">
314      <xsl:apply-templates select="*|@*|text()"/>
315    </anim:iterate>
316  </xsl:template>
317
318  <!-- shimmer -->
319  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-shimmer']">
320    <anim:iterate pres:text-only="true">
321      <xsl:apply-templates select="*|@*|text()"/>
322    </anim:iterate>
323  </xsl:template>
324
325  <!-- verticales highlight -->
326  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-vertical-highlight']">
327    <anim:par pres:preset-property="Color">
328      <xsl:apply-templates select="*|@*|text()"/>
329    </anim:par>
330  </xsl:template>
331
332  <!-- flicker -->
333  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-flicker']">
334    <anim:par pres:preset-property="Color">
335      <xsl:apply-templates select="*|@*|text()"/>
336    </anim:par>
337  </xsl:template>
338
339  <!-- grow with color -->
340  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-grow-with-color']">
341    <anim:iterate pres:preset-property="Color" pres:text-only="true">
342      <xsl:apply-templates select="*|@*|text()"/>
343    </anim:iterate>
344  </xsl:template>
345
346  <!-- teeter -->
347  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-teeter']">
348    <anim:par pres:preset-property="Color">
349      <xsl:apply-templates select="*|@*|text()"/>
350    </anim:par>
351  </xsl:template>
352
353  <!-- blast -->
354  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-blast']">
355    <anim:par pres:preset-property="Color">
356      <xsl:apply-templates select="*|@*|text()"/>
357    </anim:par>
358  </xsl:template>
359
360  <!-- style emphasis -->
361  <xsl:template match="anim:par[@pres:preset-id = 'ooo-emphasis-style-emphasis']">
362    <anim:par pres:preset-property="Color" pres:text-only="true">
363      <xsl:apply-templates select="*|@*|text()"/>
364    </anim:par>
365  </xsl:template>
366
367  <!-- bold reveal -->
368  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-bold-reveal']">
369    <anim:iterate pres:text-only="true">
370      <xsl:apply-templates select="*|@*|text()"/>
371    </anim:iterate>
372  </xsl:template>
373
374    <!-- wave -->
375  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-emphasis-wave']">
376    <anim:iterate pres:text-only="true">
377      <xsl:apply-templates select="*|@*|text()"/>
378    </anim:iterate>
379  </xsl:template>
380
381<!-- exit -->
382
383  <!-- blinds -->
384  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-venetian-blinds']">
385    <anim:par pres:preset-property="Direction">
386      <xsl:apply-templates select="*|@*|text()"/>
387    </anim:par>
388  </xsl:template>
389
390  <!-- box -->
391  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-box']">
392    <anim:par pres:preset-property="Direction">
393      <xsl:apply-templates select="*|@*|text()"/>
394    </anim:par>
395  </xsl:template>
396
397  <!-- checkerboard -->
398  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-checkerboard']">
399    <anim:par pres:preset-property="Direction">
400      <xsl:apply-templates select="*|@*|text()"/>
401    </anim:par>
402  </xsl:template>
403
404  <!-- circle -->
405  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-circle']">
406    <anim:par pres:preset-property="Direction">
407      <xsl:apply-templates select="*|@*|text()"/>
408    </anim:par>
409  </xsl:template>
410
411  <!-- crawl out -->
412  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-crawl-out']">
413    <anim:par pres:preset-property="Direction">
414      <xsl:apply-templates select="*|@*|text()"/>
415    </anim:par>
416  </xsl:template>
417
418  <!-- diamond -->
419  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-diamond']">
420    <anim:par pres:preset-property="Direction">
421      <xsl:apply-templates select="*|@*|text()"/>
422    </anim:par>
423  </xsl:template>
424
425  <!-- fly out -->
426  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-fly-out']">
427    <anim:par pres:preset-property="Direction;Accelerate;Decelerate">
428      <xsl:apply-templates select="*|@*|text()"/>
429    </anim:par>
430  </xsl:template>
431
432  <!-- peek out -->
433  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-peek-out']">
434    <anim:par pres:preset-property="Direction">
435      <xsl:apply-templates select="*|@*|text()"/>
436    </anim:par>
437  </xsl:template>
438
439  <!-- plus -->
440  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-plus']">
441    <anim:par pres:preset-property="Direction">
442      <xsl:apply-templates select="*|@*|text()"/>
443    </anim:par>
444  </xsl:template>
445
446  <!-- random bars -->
447  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-random-bars']">
448    <anim:par pres:preset-property="Direction">
449      <xsl:apply-templates select="*|@*|text()"/>
450    </anim:par>
451  </xsl:template>
452
453  <!-- split -->
454  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-split']">
455    <anim:par pres:preset-property="Direction">
456      <xsl:apply-templates select="*|@*|text()"/>
457    </anim:par>
458  </xsl:template>
459
460  <!-- strips -->
461  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-diagonal-squares']">
462    <anim:par pres:preset-property="Direction">
463      <xsl:apply-templates select="*|@*|text()"/>
464    </anim:par>
465  </xsl:template>
466
467  <!-- wheel -->
468  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-wheel']">
469    <anim:par pres:preset-property="Spokes">
470      <xsl:apply-templates select="*|@*|text()"/>
471    </anim:par>
472  </xsl:template>
473
474  <!-- wipe -->
475  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-wipe']">
476    <anim:par pres:preset-property="Direction">
477      <xsl:apply-templates select="*|@*|text()"/>
478    </anim:par>
479  </xsl:template>
480
481  <!-- collapse -->
482  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-collapse']">
483    <anim:par pres:preset-property="Direction">
484      <xsl:apply-templates select="*|@*|text()"/>
485    </anim:par>
486  </xsl:template>
487
488  <!-- color typewriter -->
489  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-colored-lettering']">
490    <anim:iterate pres:preset-property="Color1;Color2" pres:text-only="true">
491      <xsl:apply-templates select="*|@*|text()"/>
492    </anim:iterate>
493  </xsl:template>
494
495  <!-- zoom -->
496  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-zoom']">
497    <anim:par pres:preset-property="Zoom">
498      <xsl:apply-templates select="*|@*|text()"/>
499    </anim:par>
500  </xsl:template>
501
502  <!-- swivel -->
503  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-swivel']">
504    <anim:par pres:preset-property="Direction">
505      <xsl:apply-templates select="*|@*|text()"/>
506    </anim:par>
507  </xsl:template>
508
509  <!-- fade in an swivel -->
510  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-fade-out-and-swivel']">
511    <anim:iterate pres:text-only="true">
512      <xsl:apply-templates select="*|@*|text()"/>
513    </anim:iterate>
514  </xsl:template>
515
516  <!-- fade in an swivel -->
517  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-turn-and-grow']">
518    <anim:iterate pres:text-only="true">
519      <xsl:apply-templates select="*|@*|text()"/>
520    </anim:iterate>
521  </xsl:template>
522
523  <!-- fold -->
524  <xsl:template match="anim:par[@pres:preset-id = 'ooo-exit-fold']">
525    <anim:par pres:text-only="true">
526      <xsl:apply-templates select="*|@*|text()"/>
527    </anim:par>
528  </xsl:template>
529
530  <!-- whip -->
531  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-whip']">
532    <anim:iterate pres:text-only="true">
533      <xsl:apply-templates select="*|@*|text()"/>
534    </anim:iterate>
535  </xsl:template>
536
537  <!-- flip -->
538  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-flip']">
539    <anim:iterate pres:text-only="true">
540      <xsl:apply-templates select="*|@*|text()"/>
541    </anim:iterate>
542  </xsl:template>
543
544  <!-- swish -->
545  <xsl:template match="anim:iterate[@pres:preset-id = 'ooo-exit-swish']">
546    <anim:iterate pres:text-only="true">
547      <xsl:apply-templates select="*|@*|text()"/>
548    </anim:iterate>
549  </xsl:template>
550
551  <!-- remove pres:group-id -->
552  <xsl:template match="@xlink:href" />
553  <xsl:template match="@smil:targetElement" />
554  <xsl:template match="@pres:group-id" />
555
556  <!-- copy   -->
557  <xsl:template match="*|@*|text()">
558    <xsl:copy>
559      <xsl:apply-templates select="*|@*|text()"/>
560    </xsl:copy>
561  </xsl:template>
562
563</xsl:stylesheet>
564