Many FB2 fixes
[librarian.git] / librarian / fb2 / footnotes.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:dc="http://purl.org/dc/elements/1.1/"
11         xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
12         xmlns:l="http://www.w3.org/1999/xlink">
13
14         <!-- footnote body mode -->
15         <xsl:template match="pa|pe|pr|pt" mode="footnotes">
16                 <!-- we number them absolutely -->
17                 <xsl:variable name="n" select="count(preceding::pa) + count(preceding::pe) + count(preceding::pr) + count(preceding::pt) + 1"/>
18
19                 <xsl:element name="section">
20                         <xsl:attribute name="id">fn<xsl:value-of select="$n"/></xsl:attribute>
21
22                         <p><xsl:apply-templates mode="inline"/>
23                 <xsl:if test="local-name() = 'pa'">
24                     <xsl:text> [przypis autorski]</xsl:text>
25                 </xsl:if></p>
26                 </xsl:element>
27         </xsl:template>
28         <xsl:template match="text()" mode="footnotes"/>
29
30         <!-- footnote links -->
31         <xsl:template match="pa|pe|pr|pt" mode="inline">
32                 <xsl:variable name="n" select="count(preceding::pa) + count(preceding::pe) + count(preceding::pr) + count(preceding::pt) + 1"/>
33                 <xsl:element name="a">
34                         <xsl:attribute name="type">note</xsl:attribute>
35                         <xsl:attribute name="l:href">#fn<xsl:value-of select="$n"/></xsl:attribute>
36
37                         <xsl:text>[</xsl:text>
38                         <xsl:value-of select="$n"/>
39                         <xsl:text>]</xsl:text>
40                 </xsl:element>
41         </xsl:template>
42 </xsl:stylesheet>