FB2: output a basic book description.
[librarian.git] / librarian / fb2 / fb2.xslt
1 <?xml version="1.0" encoding="utf-8"?>
2 <!--
3
4         This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
5         Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
6
7 -->
8 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9         xmlns:wl="http://wolnelektury.pl/functions"
10         xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
11         xmlns:l="http://www.w3.org/1999/xlink">
12
13         <xsl:include href="description.xslt"/>
14         <xsl:include href="footnotes.xslt"/>
15         <xsl:include href="inline.xslt"/>
16         <xsl:include href="paragraphs.xslt"/>
17         <xsl:include href="poems.xslt"/>
18         <xsl:include href="sections.xslt"/>
19
20         <xsl:strip-space elements="*"/>
21         <xsl:output encoding="utf-8" method="xml" indent="yes"/>
22
23         <xsl:template match="utwor">
24                 <FictionBook>
25                         <xsl:apply-templates mode="outer"/>
26
27                         <body name="footnotes">
28                                 <xsl:apply-templates mode="footnotes"/>
29                         </body>
30                 </FictionBook>
31         </xsl:template>
32
33         <!-- we can't handle lyrics nicely yet -->
34         <xsl:template match="powiesc|opowiadanie|liryka_l|liryka_lp" mode="outer">
35                 <body> <!-- main body for main book flow -->
36                         <xsl:if test="autor_utworu or nazwa_utworu">
37                                 <title>
38                                         <xsl:apply-templates mode="title"
39                                                 select="autor_utworu|dzielo_nadrzedne|nazwa_utworu"/>
40                                 </title>
41                         </xsl:if>
42
43                         <xsl:variable name="sections" select="count(naglowek_rozdzial)"/>
44                         <section>
45                                 <xsl:choose>
46                                         <xsl:when test="local-name() = 'liryka_l'">
47                                                 <poem>
48                                                         <xsl:apply-templates mode="para"/>
49                                                 </poem>
50                                         </xsl:when>
51
52                                         <xsl:otherwise>
53                                                 <xsl:apply-templates mode="para"
54                                                         select="*[count(following-sibling::naglowek_rozdzial)
55                                                         = $sections]"/>
56                                         </xsl:otherwise>
57                                 </xsl:choose>
58                         </section>
59
60                         <xsl:apply-templates mode="sections"/>
61                 </body>
62         </xsl:template>
63
64         <xsl:template match="uwaga" mode="outer"/>
65         <xsl:template match="extra" mode="outer"/>
66
67         <xsl:template mode="title" match="*">
68                 <!-- title -->
69
70                 <p><xsl:apply-templates mode="inline"/></p>
71         </xsl:template>
72
73         <xsl:template match="uwaga" mode="title"/>
74         <xsl:template match="extra" mode="title"/>
75 </xsl:stylesheet>