1 <xsl:stylesheet version="1.0"
2 xmlns="http://www.w3.org/1999/xhtml"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
6 Dokument ten opisuje jednoznaczne przekształcenie WLML 0.1 -> XHTML.
8 <xsl:output method="html" encoding="utf-8" indent="yes" />
10 <xsl:template match="/">
11 <xsl:apply-templates select="chunk|utwor" />
15 Base tag for rendering a fragment of text
17 <xsl:template match="chunk">
18 <xsl:apply-templates select="child::node()">
19 <xsl:with-param name="mixed" select="true()" />
20 </xsl:apply-templates>
24 Base tag for rendering the whole text
32 Przekształcenia poszczególnych elementów zgodnie z:
33 http://wiki.wolnepodreczniki.pl/Lektury:Sk%C5%82ad/Tagi_sk%C5%82adu
36 <!-- TAGI MASTERÓW STYLÓW
38 Tagi rozpoczynające i kończące tekst utworu lirycznego o standardowej szerokości łamu:
41 <xsl:template match="liryka_l">
42 <xsl:param name="mixed" />
43 <div class="{name()}" x-node="{name()}">
44 <xsl:apply-templates select="child::node()">
45 <xsl:with-param name="mixed" select="false()" />
46 </xsl:apply-templates>
51 *****************************
52 ELEMENTY POZA TEKSTEM GŁÓWNYM
53 *****************************
57 Autor składanego utworu
59 Element strony tytułowej - lub odpowiadającej jej przestrzeni,
60 np. na stronie internetowej) :
62 <autor_utworu> imiona-itd.-autora-składanego-utworu </autor_utworu>
64 <xsl:template match="autor_utworu">
65 <xsl:param name="mixed" />
66 <h2 class="{name()}" x-editable="true" x-node="{name()}">
67 <xsl:apply-templates select="child::node()">
68 <xsl:with-param name="mixed" select="true()" />
69 </xsl:apply-templates>
74 Nazwa składanego utworu
76 Element strony tytułowej - lub odpowiadającej jej przestrzeni,
77 np. na stronie internetowej
79 <nazwa_utworu> tytuł-składanego-utworu </nazwa_utworu>
81 <xsl:template match="nazwa_utworu">
82 <xsl:param name="mixed" />
83 <h1 class="{name()}" x-editable="true" x-node="{name()}">
84 <xsl:apply-templates select="child::node()">
85 <xsl:with-param name="mixed" select="true()" />
86 </xsl:apply-templates>
91 Nazwa utworu nadrzędnego, w którego skład wchodzi dany utwór
92 <dzielo_nadrzedne> tytuł-dzieła-nadrzędnego </dzielo_nadrzedne>
98 <autor_utworu>Bruno Jasieński</autor_utworu>
99 <dzielo_nadrzedne>But w butonierce</dzielo_nadrzedne>
100 <nazwa_utworu>Deszcz</nazwa_utworu>
103 <xsl:template match="dzielo_nadrzedne">
104 <xsl:param name="mixed" />
105 <h2 class="{name()}" x-editable="true" x-node="{name()}">
106 <xsl:apply-templates select="child::node()">
107 <xsl:with-param name="mixed" select="true()" />
108 </xsl:apply-templates>
113 Podtytuł, czyli wszystkie dopiski do tytułu
115 Element strony tytułowej - lub odpowiadającej jej przestrzeni.
116 <podtytul> podtytuł-składanego-utworu </podtytul>
121 <autor_utworu>Daniel Defoe</autor_utworu>
122 <nazwa_utworu>Robinson Crusoe</nazwa_utworu>
123 <podtytul>Jego życia losy, doświadczenia i przypadki</podtytul>
126 <xsl:template match="podtytul">
127 <xsl:param name="mixed" />
128 <h3 class="{name()}" x-editable="true" x-node="{name()}">
129 <xsl:apply-templates select="child::node()">
130 <xsl:with-param name="mixed" select="true()" />
131 </xsl:apply-templates>
136 Tagi obejmujące tekst noty poprzedzającej tekst główny (styl wieloakapitowy):
138 <nota><akap> tekst-noty </akap></nota> (styl wieloakapitowy)
141 <xsl:template match="nota">
142 <xsl:param name="mixed" />
143 <div class="{name()}" x-node="{name()}">
144 <xsl:apply-templates select="child::node()">
145 <xsl:with-param name="mixed" select="false()" />
146 </xsl:apply-templates>
151 Tagi obejmujące tekst dedykacji (styl wieloakapitowy bądź wielostrofowy):
152 <dedykacja> tekst-dedykacji </dedykacja>
154 <xsl:template match="dedykacja">
155 <xsl:param name="mixed" />
156 <div class="{name()}" x-node="{name()}">
157 <xsl:apply-templates select="child::node()">
158 <xsl:with-param name="mixed" select="false()" />
159 </xsl:apply-templates>
164 Tagi obejmujące tekst motta (styl wieloakapitowy bądź wielostrofowy):
165 <motto> tekst-motta </motto>
167 <xsl:template match="motto">
168 <xsl:param name="mixed" />
169 <div class="{name()}" x-node="{name()}">
170 <xsl:apply-templates select="child::node()">
171 <xsl:with-param name="mixed" select="false()" />
172 </xsl:apply-templates>
176 <xsl:template match="motto_podpis">
177 <xsl:param name="mixed" />
178 <p class="{name()}" x-editable="true" x-node="{name()}">
179 <xsl:apply-templates select="child::node()">
180 <xsl:with-param name="mixed" select="true()" />
181 </xsl:apply-templates>
186 Tagi obejmujące listę osób poprzedzającą tekst dramatu
187 (zwykle składaną na osobnej stronie; to odmiana stylu listy):
189 <lista_osob> osoby </lista_osob>
191 <xsl:template match="lista_osob">
192 <xsl:param name="mixed" />
193 <div class="{name()}" x-editable="true" x-node="{name()}">
194 <xsl:apply-templates select="child::node()">
195 <xsl:with-param name="mixed" select="false()" />
196 </xsl:apply-templates>
200 <xsl:template match="naglowek_listy">
201 <xsl:param name="mixed" />
202 <p class="{name()}" x-node="{name()}">
203 <xsl:apply-templates select="child::node()">
204 <xsl:with-param name="mixed" select="true()" />
205 </xsl:apply-templates>
209 <xsl:template match="lista_osoba">
210 <xsl:param name="mixed" />
211 <p class="{name()}" x-editable="true" x-node="{name()}">
212 <xsl:apply-templates select="child::node()">
213 <xsl:with-param name="mixed" select="true()" />
214 </xsl:apply-templates>
220 ***************************
221 TAGI STYLÓW TEKSTU GŁÓWNEGO
222 ***************************
226 Tagi nagłówka części/księgi:
227 <naglowek_czesc> nagłówek-części-lub-księgi </naglowek_czesc>
229 <xsl:template match="naglowek_czesc">
230 <xsl:param name="mixed" />
231 <h2 class="{name()}" x-editable="true" x-node="{name()}">
232 <xsl:apply-templates select="child::node()">
233 <xsl:with-param name="mixed" select="true()" />
234 </xsl:apply-templates>
239 Tagi tytułu rozdziału:
240 <naglowek_rozdzial> nr-i/lub-tytuł </naglowek_rozdzial>
242 <xsl:template match="naglowek_rozdzial">
243 <xsl:param name="mixed" />
244 <h3 class="{name()}" x-editable="true" x-node="{name()}">
245 <xsl:apply-templates select="child::node()">
246 <xsl:with-param name="mixed" select="true()" />
247 </xsl:apply-templates>
252 Tagi tytułu podrozdziału:
253 <naglowek_podrozdzial> nr-i/lub-podtytuł </naglowek_podrozdzial>
255 <xsl:template match="naglowek_podrozdzial">
256 <xsl:param name="mixed" />
257 <h4 class="{name()}" x-editable="true" x-node="{name()}">
258 <xsl:apply-templates select="child::node()">
259 <xsl:with-param name="mixed" select="true()" />
260 </xsl:apply-templates>
266 <srodtytul> śródtytuł </srodtytul>
268 Tagi nagłówków aktów:
269 <naglowek_akt> nagłówek-aktu </naglowek_akt>
272 <xsl:template match="srodtytul">
273 <xsl:param name="mixed" />
274 <h2 class="{name()}" x-editable="true" x-node="{name()}">
275 <xsl:apply-templates select="child::node()">
276 <xsl:with-param name="mixed" select="true()" />
277 </xsl:apply-templates>
281 <xsl:template match="naglowek_akt">
282 <xsl:param name="mixed" />
283 <h2 class="{name()}" x-editable="true" x-node="{name()}">
284 <xsl:apply-templates select="child::node()">
285 <xsl:with-param name="mixed" select="true()" />
286 </xsl:apply-templates>
292 <naglowek_scena> nagłówek-sceny </naglowek_scena>
295 <xsl:template match="naglowek_scena">
296 <xsl:param name="mixed" />
297 <h3 class="{name()}" x-editable="true" x-node="{name()}">
298 <xsl:apply-templates select="child::node()">
299 <xsl:with-param name="mixed" select="true()" />
300 </xsl:apply-templates>
304 <xsl:template match="naglowek_osoba">
305 <xsl:param name="mixed" />
306 <h4 class="{name()}" x-editable="true" x-node="{name()}">
307 <xsl:apply-templates select="child::node()">
308 <xsl:with-param name="mixed" select="true()" />
309 </xsl:apply-templates>
314 ************************
315 Bloki w tekście głównym
316 ************************
319 <xsl:template match="dlugi_cytat">
320 <xsl:param name="mixed" />
321 <div class="{name()}" x-node="{name()}">
322 <xsl:apply-templates select="child::node()">
323 <xsl:with-param name="mixed" select="false()" />
324 </xsl:apply-templates>
328 <xsl:template match="poezja_cyt">
329 <xsl:param name="mixed" />
330 <div class="{name()}" x-node="{name()}">
331 <xsl:apply-templates select="child::node()">
332 <xsl:with-param name="mixed" select="false()" />
333 </xsl:apply-templates>
337 <xsl:template match="kwestia">
338 <xsl:param name="mixed" />
339 <div class="{name()}" x-node="{name()}">
340 <xsl:apply-templates select="child::node()">
341 <xsl:with-param name="mixed" select="false()" />
342 </xsl:apply-templates>
346 <xsl:template match="didaskalia">
347 <xsl:param name="mixed" />
348 <div class="{name()}" x-node="{name()}">
349 <xsl:apply-templates select="child::node()">
350 <xsl:with-param name="mixed" select="false()" />
351 </xsl:apply-templates>
355 <xsl:template match="wywiad_pyt">
356 <xsl:param name="mixed" />
357 <div class="{name()}" x-node="{name()}">
358 <xsl:apply-templates select="child::node()">
359 <xsl:with-param name="mixed" select="false()" />
360 </xsl:apply-templates>
364 <xsl:template match="wywiad_odp">
365 <xsl:param name="mixed" />
366 <div class="{name()}" x-node="{name()}">
367 <xsl:apply-templates select="child::node()">
368 <xsl:with-param name="mixed" select="false()" />
369 </xsl:apply-templates>
374 ***********************************
375 Style akapitowe oraz strofy i wersy
376 ***********************************
379 <xsl:template match="akap">
380 <xsl:param name="mixed" />
381 <p class="{name()}" x-editable="true" x-node="{name()}">
382 <xsl:apply-templates select="child::node()">
383 <xsl:with-param name="mixed" select="true()" />
384 </xsl:apply-templates>
388 <xsl:template match="akap_cd">
389 <xsl:param name="mixed" />
390 <p class="{name()}" x-editable="true" x-node="{name()}">
391 <xsl:apply-templates select="child::node()">
392 <xsl:with-param name="mixed" select="true()" />
393 </xsl:apply-templates>
397 <xsl:template match="akap_dialog">
398 <xsl:param name="mixed" />
399 <p class="{name()}" x-editable="true" x-node="{name()}">
400 <xsl:apply-templates select="child::node()">
401 <xsl:with-param name="mixed" select="true()" />
402 </xsl:apply-templates>
411 <xsl:template match="strofa">
412 <div class="{name()}" x-editable="true" x-node="{name()}">
414 <xsl:when test="count(br) > 0">
415 <xsl:call-template name="verse">
416 <xsl:with-param name="verse-content" select="br[1]/preceding-sibling::node()" />
417 <xsl:with-param name="verse-type" select="name(br[1]/preceding-sibling::*[starts-with(name(current()),'wers')])" />
419 <xsl:for-each select="br">
420 <!-- Each BR tag "consumes" text after it -->
421 <xsl:variable name="lnum" select="count(preceding-sibling::br)" />
422 <xsl:call-template name="verse">
423 <xsl:with-param name="verse-content"
424 select="following-sibling::node()[count(preceding-sibling::br) = $lnum+1]" />
425 <xsl:with-param name="verse-type"
426 select="name(following-sibling::*[count(preceding-sibling::br) = $lnum+1 and starts-with(name(current()), 'wers')][1])" />
431 <xsl:call-template name="verse">
432 <xsl:with-param name="verse-content" select="child::node()" />
433 <xsl:with-param name="verse-type" select="name(child::*[starts-with(name(current()),'wers')])" />
440 <xsl:template name="verse">
441 <xsl:param name="verse-content" />
442 <xsl:param name="verse-type" />
445 <xsl:when test="$verse-type = ''">
446 <p class="wers" x-node="wers">
447 <xsl:for-each select="$verse-content[name(.) != 'br']">
448 <xsl:apply-templates select=".">
449 <xsl:with-param name="mixed" select="true()" />
450 </xsl:apply-templates>
455 <p class="{$verse-type}" x-node="{$verse-type}">
456 <xsl:for-each select="$verse-content[name(.) != 'br']">
457 <xsl:apply-templates select=".">
458 <xsl:with-param name="mixed" select="true()" />
459 </xsl:apply-templates>
476 Tagi obejmujące tytuł dzieła, np. książki, filmu, piosenki,
477 modlitwy, przedstawienia teatr. itd.:
479 <tytul_dziela> tytuł-dzieła </tytul_dziela>
481 <xsl:template match="tytul_dziela">
482 <xsl:param name="mixed" />
483 <span class="{name()}" x-editable="true" x-node="{name()}">
484 <xsl:apply-templates select="child::node()">
485 <xsl:with-param name="mixed" select="true()" />
486 </xsl:apply-templates>
490 <xsl:template match="wyroznienie|slowo_obce|mat|didask_tekst|osoba|wyp_osoba|www">
491 <xsl:param name="mixed" />
492 <em class="{name()}" x-node="{name()}">
493 <xsl:apply-templates select="child::node()">
494 <xsl:with-param name="mixed" select="true()" />
495 </xsl:apply-templates>
504 <xsl:template match="sekcja_swiatlo">
505 <xsl:param name="mixed" />
506 <br class="{name()}" x-node="{name()}" />
509 <xsl:template match="sekcja_asteryks">
510 <xsl:param name="mixed" />
511 <hr class="{name()}" x-node="{name()}" />
514 <xsl:template match="separator_linia">
515 <xsl:param name="mixed" />
516 <hr class="{name()}" x-node="{name()}" />
519 <xsl:template match="zastepnik_wersu">
520 <xsl:param name="mixed" />
521 <hr class="{name()}" x-node="{name()}" />
533 <xsl:template match="pr|pa|pe|pt">
534 <span class="annotation-inline-box" x-node="{name()}">
535 <a name="anchor-{generate-id(.)}" />
536 <!-- the link to the non-inline version -->
537 <a href="#annotation-{generate-id(.)}" class="annotation"></a>
538 <!-- inline contents -->
539 <span x-annotation-box="true">
540 <xsl:apply-templates select="node()">
541 <xsl:with-param name="mixed" select="true()" />
542 </xsl:apply-templates>
548 <xsl:template match="begin">
549 <xsl:variable name="id" select="substring-after(@id, 'b')" />
550 <span class="theme-begin" x-node="begin" x-theme-class="{$id}" id="{@id}"></span>
551 <xsl:apply-templates select="following-sibling::motyw[@id = concat('m', $id)]" mode="theme-begin" />
554 <xsl:template match="motyw">
555 <span class="theme-ref" x-node="motyw" x-theme-class="{substring-after(@id, 'm')}" id="{@id}">
556 <xsl:value-of select="." />
561 <xsl:template match="end">
562 <span class="theme-end" x-node="end" x-theme-class="{substring-after(@id, 'e')}" id="{@id}">
573 <xsl:template match="text()">
574 <xsl:param name="mixed" />
576 <xsl:when test="normalize-space(.) = ''" />
577 <xsl:when test="not($mixed)">
578 <span x-node="text" class="out-of-flow-text"
579 x-content="{normalize-space(.)}"></span>
582 <xsl:value-of select="." />
587 <xsl:template match="*">
588 <div x-node="error" x-content="{name()}" />