return output_html, toc, chars
-def transform(provider, slug=None, file_path=None, output_file=None, output_dir=None, make_dir=False, verbose=False, sample=None, cover_fn=None):
+def transform(provider, slug=None, file_path=None, output_file=None, output_dir=None, make_dir=False, verbose=False,
+ sample=None, cover_fn=None, flags=None):
""" produces a EPUB file
provider: a DocProvider
make_dir: writes output to <output_dir>/<author>/<slug>.epub instead of <output_dir>/<slug>.epub
sample=n: generate sample e-book (with at least n paragraphs)
cover_fn: function(author, title) -> cover image
+ flags: less-advertising,
"""
def transform_file(input_xml, chunk_counter=1, first=True, sample=None):
raise ValueError('either slug or file_path should be specified')
input_xml = etree.parse(provider[slug])
+ if flags:
+ for flag in flags:
+ input_xml.getroot().set(flag, 'yes')
+
metadata = input_xml.find('.//'+RDFNS('Description'))
if metadata is None:
raise NoDublinCore('Document has no DublinCore - which is required.')
margin-bottom: 0.25em;\r
}\r
\r
+.intitle\r
+{\r
+ margin: 0;\r
+ text-align: center;\r
+ font-weight: bold;\r
+\r
+ font-size: 1.5em;\r
+ line-height: 1.5em;\r
+ margin-bottom: 0.25em;\r
+}\r
+\r
+.insubtitle\r
+{\r
+ margin: 0;\r
+ text-align: center;\r
+ font-weight: bold;\r
+\r
+ font-size: 1em;\r
+ line-height: 1.5em;\r
+ margin-bottom: 0.25em;\r
+}\r
+\r
.collection\r
{\r
margin: 0;\r
</xsl:when>\r
<xsl:otherwise>\r
Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie\r
- publicznej, co oznacza, że możesz go swobodnie wykorzystywać, publikować\r
+ publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować\r
i rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi materiałami\r
- (przypisy, motywy literackie etc.) które podlegają prawu autorskiemu, to\r
+ (przypisy, motywy literackie etc.), które podlegają prawu autorskiemu, to\r
te dodatkowe materiały udostępnione są na licencji\r
<a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons\r
- Uznanie Autorstwa - Na Tych Samych Warunkach 3.0 PL</a>.\r
+ Uznanie Autorstwa – Na Tych Samych Warunkach 3.0 PL</a>.\r
</xsl:otherwise>\r
</xsl:choose>\r
</p>\r
</a></p>\r
\r
<xsl:if test="//dc:source" >\r
- <p class="info">Na podstawie: <xsl:value-of select="//dc:source" /></p>\r
+ <p class="info">Tekst opracowany na podstawie: <xsl:value-of select="//dc:source" /></p>\r
</xsl:if>\r
\r
- <xsl:if test="//dc:contributor.editor|//dc:contributor.technical_editor">\r
- <p class="info">\r
- Opracowanie redakcyjne i przypisy:\r
- <xsl:apply-templates select="//dc:contributor.editor|//dc:contributor.technical_editor" />\r
- </p>\r
+ <xsl:if test="//dc:description" >\r
+ <p class="info"><xsl:value-of select="//dc:description" /></p>\r
</xsl:if>\r
\r
+ <xsl:call-template name="editors" />\r
+\r
<p class="info"> </p>\r
<p class="minor info">\r
Plik wygenerowany dnia <span id="file_date"><xsl:value-of select="substring(date:date(), 1, 10)" /></span>.\r
<xsl:value-of select="." disable-output-escaping="yes" />\r
</xsl:template>\r
\r
+ <xsl:template name="editors">\r
+ <xsl:if test="//dc:contributor.editor|//dc:contributor.technical_editor">\r
+ <p class="info">\r
+ <xsl:text>Opracowanie redakcyjne i przypisy: </xsl:text>\r
+ <xsl:for-each select="//dc:contributor.editor|//dc:contributor.technical_editor">\r
+ <xsl:if test="position() != 1">, </xsl:if>\r
+ <xsl:apply-templates mode="person" />\r
+ </xsl:for-each>.\r
+ </p>\r
+ </xsl:if>\r
+ </xsl:template>\r
+\r
<xsl:template match="dc:contributor.editor|dc:contributor.technical_editor">\r
<br /><xsl:apply-templates mode='person' />\r
</xsl:template>\r
<xsl:template match="dzielo_nadrzedne" />\r
\r
<xsl:template match="nazwa_utworu" mode="poczatek" >\r
- <h2 class="author" xmlns="http://www.w3.org/1999/xhtml">\r
+ <h2 class="intitle" xmlns="http://www.w3.org/1999/xhtml">\r
<xsl:apply-templates />\r
</h2>\r
</xsl:template>\r
<xsl:template match="nazwa_utworu" />\r
\r
<xsl:template match="podtytul" mode="poczatek">\r
- <h2 class="author" xmlns="http://www.w3.org/1999/xhtml">\r
+ <h2 class="insubtitle" xmlns="http://www.w3.org/1999/xhtml">\r
<xsl:apply-templates />\r
</h2>\r
</xsl:template>\r
\r
<p class="info"> </p>\r
\r
- <xsl:apply-templates select="//dc:contributor.translator" />\r
+ <xsl:call-template name="translators" />\r
\r
- <!--p class="info">\r
+ <xsl:if test="not(utwor/@less-advertising)">\r
+ <p class="info">\r
<a>\r
<xsl:attribute name="href">\r
<xsl:value-of select="//dc:identifier.url" />\r
Ta lektura</a>,\r
podobnie jak tysiące innych, jest dostępna on-line na stronie\r
<a href="http://www.wolnelektury.pl/">wolnelektury.pl</a>.\r
- </p-->\r
+ </p>\r
+ </xsl:if>\r
\r
<p class="info">\r
- Utwór opracowany został w ramach projektu<a href="http://www.wolnelektury.pl/"> Wolne Lektury</a> przez<a href="http://www.nowoczesnapolska.org.pl/"> Fundację Nowoczesna Polska</a>.\r
+ Utwór opracowany został w ramach projektu<a href="http://www.wolnelektury.pl/"> Wolne Lektury</a> przez<a href="http://www.nowoczesnapolska.org.pl/"> fundację Nowoczesna Polska</a>.\r
</p>\r
\r
<p class="footer info">\r
</h2>\r
</xsl:template>\r
\r
- <xsl:template match="dc:contributor.translator">\r
- <p class="info">\r
- tłum. <xsl:apply-templates mode="person" />\r
- </p>\r
+ <xsl:template name="translators">\r
+ <xsl:if test="//dc:contributor.translator">\r
+ <p class="info">\r
+ <xsl:text>tłum. </xsl:text>\r
+ <xsl:for-each select="//dc:contributor.translator">\r
+ <xsl:if test="position() != 1">, </xsl:if>\r
+ <xsl:apply-templates mode="person" />\r
+ </xsl:for-each>\r
+ </p>\r
+ </xsl:if>\r
</xsl:template>\r
\r
<xsl:template match="text()" mode="person">\r
from lxml.etree import XMLSyntaxError, XSLTApplyError
functions.reg_substitute_entities()
+functions.reg_person_name()
STYLESHEETS = {
'legacy': 'xslt/book2html.xslt',
def parse_creator(doc):
- """ find all dc:creator tags and add dc:creator_parsed with forenames first """
- for creator in doc.findall('//'+DCNS('creator')):
- p = Person.from_text(creator.text)
- creator_parsed = deepcopy(creator)
- creator_parsed.tag = DCNS('creator_parsed')
- creator_parsed.text = ' '.join(p.first_names + (p.last_name,))
- creator.getparent().insert(0, creator_parsed)
+ """ find all dc:creator and dc.contributor tags and add *_parsed versions with forenames first """
+ for person in doc.xpath("|".join('//dc:'+(tag) for tag in (
+ 'creator', 'contributor.translator', 'contributor.editor', 'contributor.technical_editor')),
+ namespaces = {'dc': str(DCNS)})[::-1]:
+ p = Person.from_text(person.text)
+ person_parsed = deepcopy(person)
+ person_parsed.tag = person.tag + '_parsed'
+ person_parsed.text = p.readable()
+ person.getparent().insert(0, person_parsed)
def get_stylesheet(name):
parse_dublincore=True)
f.close()
-
+ print document.book_info
for child_uri in document.book_info.parts:
+ print child_uri
child = load_including_children(provider, uri=child_uri)
document.edoc.getroot().append(child.edoc.getroot())
-
return document
\href{http://www.wolnelektury.pl}{\xbox{\includegraphics[width=\textwidth]{wl-logo.png}}}
\end{minipage}
\begin{minipage}[t]{.65\textwidth}\vspace{0pt}
- Na podstawie: \sourceinfo
+ \href{\bookurl}{Ta lektura}, podobnie jak tysiące innych, jest dostępna on-line na stronie
+ \href{http://www.wolnelektury.pl/}{wolnelektury.pl}.
\vspace{.5em}
- Wersja lektury on-line dostępna jest \href{\bookurl}{na stronie wolnelektury.pl}.
- \vspace{.5em}
-
- \rightsinfo
-
- \vspace{.6em}
+ Utwór opracowany został w ramach projektu \href{http://www.wolnelektury.pl/}{Wolne Lektury}
+ przez \href{http://nowoczesnapolska.org.pl}{fundację Nowoczesna Polska}.
\end{minipage}
\noindent \rule{\linewidth}{0.4pt}
\vspace{.6em}
\color{black}
+ }
+}
+
+\newcommand{\editorialsection}{
+ \begin{figure}[b!]
+ {
+ \footnotesize
+ \color{theme}
+ \noindent \rule{\linewidth}{0.4pt}
-% \begin{figure}[b!]
-% \footnotesize
-% \color{theme}
-% \noindent \rule{\linewidth}{0.4pt}
+ \rightsinfo
+ \vspace{.6em}
-% Szkolna biblioteka internetowa Wolne Lektury tworzona jest dzięki pracy Wolontariuszy, ale to osoby
-% zatrudnione w~FNP będą musiały wymyślić, co powinno zostać napisane w~tym miejscu. Można zupełnie usunąć
-% tę sekcję, ale autor konwertera chciał się popisać, że umie coś takiego zrobić.
-% \color{black}
-% \end{figure}
- }
+ \sourceinfo
+
+ \description
+ \vspace{.6em}
+
+ Opracowanie redakcyjne i przypisy: \editors.
+
+ \color{black}
+ }
+ \end{figure}
}
+
\newcommand{\typosubsubsection}[1]{%
{\textsc{#1}}
}
%{\addfontfeature{Scale=2.0, FakeStretch=0.98, LetterSpace=-2.0}\emph{#1}}
}
+
+\newcommand{\tytul}[1]{%
+#1%
+\vspace{1em}%
+}
+
\newcommand{\nazwapodutworu}[1]{%
\section*{\typosection{#1}}%
}
\subsection*{\typosubsection{#1}}%
}
+\newcommand{\dzielonadrzedne}[1]{%
+\subsection*{\typosubsubsection{#1}}%
+}
+
\newcommand{\nazwautworu}[1]{%
\section*{\typosection{#1}}%
}
\newcommand{\podtytul}[1]{%
-\subsection*{\typosubsection{#1}}%
+\subsection*{\typosubsubsection{#1}}%
}
+\newcommand{\translator}[1]{%
+\subsection*{\typosubsubsection{tłum. #1}}%
+}
+
+
\newcommand{\powiesc}[1]{#1}
\newcommand{\opowiadanie}[1]{#1}
\newcommand{\lirykal}[1]{#1}
<env name="document">
<cmd name="maketitle" />
- <xsl:choose>
+ <cmd name="tytul"><parm>
+ <xsl:choose>
<xsl:when test="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu">
- <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/autor_utworu" mode="title" />
<!-- title in master -->
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/autor_utworu" mode="title" />
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/dzielo_nadrzedne" mode="title" />
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu" mode="title" />
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/podtytul" mode="title" />
+ <!-- dc in master or not -->
+ <cmd name="translatorsline" />
</xsl:when>
<xsl:otherwise>
<!-- look for author title in dc -->
<xsl:apply-templates select="rdf:RDF" mode="firstdctitle" />
<xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" mode='firstdctitle' />
</xsl:otherwise>
- </xsl:choose>
+ </xsl:choose>
+ </parm></cmd>
<xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" />
<xsl:apply-templates select="utwor" mode="part" />
+ <cmd name="editorialsection" />
</env>
</TeXML>
</xsl:template>
<xsl:template match="utwor" mode="part">
- <!-- title for empty dc -->
- <xsl:choose>
+ <cmd name="tytul"><parm>
+ <xsl:choose>
<xsl:when test="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu">
<!-- title in master -->
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/nazwa_utworu" mode="title" />
+ <xsl:apply-templates select="(powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny)/podtytul" mode="title" />
</xsl:when>
<xsl:otherwise>
<!-- look for title in dc -->
<xsl:apply-templates select="rdf:RDF" mode="dctitle" />
<xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" mode='dctitle' />
</xsl:otherwise>
- </xsl:choose>
+ </xsl:choose>
+ </parm></cmd>
<xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" />
<xsl:apply-templates select="utwor" mode="part" />
</xsl:template>
<xsl:template match="rdf:RDF" mode="titlepage">
- <cmd name='title'><parm>
- <xsl:apply-templates select=".//dc:title/node()" mode="inline" />
- </parm></cmd>
- <cmd name='author'><parm>
- <xsl:apply-templates select=".//dc:creator_parsed/node()" mode="inline" />
- </parm></cmd>
<TeXML escape="0">
- \def\sourceinfo{<xsl:apply-templates select=".//dc:source" mode="inline" />}
+ \def\authors{<xsl:call-template name="authors" />}
+ \author{\authors}
+ \title{<xsl:apply-templates select=".//dc:title" />}
+ \def\translatorsline{<xsl:call-template name="translators" />}
+
\def\bookurl{<xsl:value-of select=".//dc:identifier.url" />}
- \def\rightsinfo{Ten utwór nie jest chroniony prawem autorskim i~znajduje się w~domenie publicznej,
- co oznacza, że możesz go swobodnie wykorzystywać, publikować i~rozpowszechniać.}
+
+ \def\rightsinfo{Ten utwór nie jest chroniony prawem autorskim i~znajduje się w~domenie
+ publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować
+ i~rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi materiałami
+ (przypisy, motywy literackie etc.), które podlegają prawu autorskiemu, to
+ te dodatkowe materiały udostępnione są na licencji
+ \href{http://creativecommons.org/licenses/by-sa/3.0/}{Creative Commons
+ Uznanie Autorstwa – Na Tych Samych Warunkach 3.0 PL}.}
<xsl:if test=".//dc:rights.license">
\def\rightsinfo{Ten utwór jest udostepniony na licencji
\href{<xsl:value-of select=".//dc:rights.license" />}{<xsl:value-of select=".//dc:rights" />}.}
</xsl:if>
+
+ \def\sourceinfo{
+ <xsl:if test=".//dc:source">
+ Tekst opracowany na podstawie: <xsl:apply-templates select=".//dc:source" mode="inline" />
+ \vspace{.6em}
+ </xsl:if>}
+ \def\description{<xsl:apply-templates select=".//dc:description" mode="inline" />}
+ \def\editors{<xsl:call-template name="editors" />}
</TeXML>
</xsl:template>
</xsl:template>
<xsl:template match="rdf:RDF" mode="firstdctitle">
- <cmd name="autorutworu"><parm>
- <xsl:apply-templates select=".//dc:creator_parsed/node()" mode="inline" />
- </parm></cmd>
+ <cmd name="autorutworu"><parm><cmd name="authors"/></parm></cmd>
<cmd name="nazwautworu"><parm>
<xsl:apply-templates select=".//dc:title/node()" mode="inline" />
</parm></cmd>
+ <cmd name="translatorsline" />
</xsl:template>
<!-- ========================================== -->
<!-- only in root -->
-<xsl:template match="autor_utworu" mode="title">
- <cmd name="autorutworu"><parm>
- <xsl:apply-templates mode="inline" />
- </parm></cmd>
+<xsl:template
+ match="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul"
+ mode="title">
+ <cmd>
+ <xsl:attribute name="name">
+ <xsl:value-of select="wl:texcommand(name())" />
+ </xsl:attribute>
+ <parm><xsl:apply-templates mode="inline"/></parm>
+ </cmd>
</xsl:template>
<xsl:template
- match="nazwa_utworu|podtytul|naglowek_akt|naglowek_czesc|srodtytul|naglowek_osoba|naglowek_podrozdzial|naglowek_scena|naglowek_rozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_dialog|akap_cd|motto_podpis|naglowek_listy">
+ match="naglowek_akt|naglowek_czesc|srodtytul|naglowek_osoba|naglowek_podrozdzial|naglowek_scena|naglowek_rozdzial|miejsce_czas|didaskalia|lista_osoba|akap|akap_dialog|akap_cd|motto_podpis|naglowek_listy">
<cmd>
<xsl:attribute name="name">
<xsl:value-of select="wl:texcommand(name())" />
</cmd>
</xsl:template>
+<xsl:template name="authors">
+ <xsl:for-each select=".//dc:creator_parsed">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="inline" />
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="editors">
+ <xsl:for-each select=".//dc:contributor.editor_parsed|.//dc:contributor.technical_editor_parsed">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="inline" />
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="translators">
+ <xsl:if test=".//dc:contributor.translator_parsed">
+ <cmd name='translator'><parm>
+ <xsl:for-each select=".//dc:contributor.translator_parsed">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="inline" />
+ </xsl:for-each>
+ </parm></cmd>
+ </xsl:if>
+</xsl:template>
+
<!-- ============== -->
<!-- = ADDED TAGS = -->
functions.reg_substitute_entities()
functions.reg_wrap_words()
functions.reg_strip()
+functions.reg_person_name()
TEMPLATE = u"""\
-Kodowanie znaków w dokumencie: UTF-8.
------
-%(description)s
+%(text)s
-%(license_description)s.%(source)s
-Wersja lektury w opracowaniu merytorycznym i krytycznym (przypisy i motywy) dostępna jest na stronie %(url)s.
-----
+Ta lektura, podobnie jak tysiące innych, dostępna jest na stronie wolnelektury.pl.
+Wersja lektury w opracowaniu merytorycznym i krytycznym (przypisy i motywy) dostępna jest na stronie %(url)s.
+Utwór opracowany został w ramach projektu Wolne Lektury przez fundację Nowoczesna Polska.
+%(license_description)s.%(source)s
-%(text)s
+%(description)s
+
+Opracowanie redakcyjne i przypisy: %(contributors)s
"""
def transform(input_file, output_file, parse_dublincore=True, **options):
parsed_dc = dcparser.BookInfo.from_element(document.edoc)
description = parsed_dc.description
url = parsed_dc.url
+
license_description = parsed_dc.license_description
license = parsed_dc.license
if license:
license_description = u"Ten utwór jest udostepniony na licencji %s: \n%s" % (license_description, license)
else:
- license_description = u"Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie publicznej, co oznacza, że możesz go swobodnie wykorzystywać, publikować i rozpowszechniać"
+ license_description = u"Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować i rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi materiałami (przypisy, motywy literackie etc.), które podlegają prawu autorskiemu, to te dodatkowe materiały udostępnione są na licencji Creative Commons Uznanie Autorstwa – Na Tych Samych Warunkach 3.0 PL (http://creativecommons.org/licenses/by-sa/3.0/)"
+
source = parsed_dc.source_name
if source:
- source = "\n\nNa podstawie: " + source
+ source = "\n\nTekst opracowany na podstawie: " + source
else:
source = ''
+
+ contributors = ', '.join(person.readable() for person in (parsed_dc.technical_editors + parsed_dc.editors))
else:
description = 'Publikacja zrealizowana w ramach projektu Wolne Lektury (http://wolnelektury.pl).'
url = '*' * 10
license = ""
license_description = ""
source = ""
+ contributors = ""
output_file.write((TEMPLATE % {
'description': description,
'url': url,
'license_description': license_description,
'text': unicode(result),
'source': source,
+ 'contributors': contributors,
}).encode('utf-8'))
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:wl="http://wolnelektury.pl/functions" >
+ xmlns:wl="http://wolnelektury.pl/functions"
+ xmlns:dc="http://purl.org/dc/elements/1.1/" >
<xsl:output encoding="utf-8" indent="yes" omit-xml-declaration = "yes" version="2.0" />
<xsl:template match="utwor">
}
- #toc, #themes, #nota_red {
+ #toc, #themes, #nota_red, #info {
position: fixed;
left: 0em;
top: 1.5em;
position: inherit;
}
+ #info p {
+ text-align: justify;
+ margin: 1.5em 0 0;
+ }
+
/* =================================================== */
/* = Common elements: headings, paragraphs and lines = */
/* =================================================== */
margin-top: -0.25em;
}
+ span.translator {
+ font-size: 0.375em;
+ display: block;
+ line-height: 1.5em;
+ margin-top: 0.25em;
+ }
+
div.didaskalia {
font-style: italic;
margin: 0.5em 0 0 1.5em;
<xsl:if test="nazwa_utworu">
<h1>
<xsl:apply-templates select="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul" mode="header" />
+ <xsl:call-template name="translators" />
</h1>
</xsl:if>
<xsl:apply-templates />
</xsl:template>
+<xsl:template name="translators">
+ <xsl:if test="//dc:contributor.translator">
+ <span class="translator">
+ <xsl:text>tłum. </xsl:text>
+ <xsl:for-each select="//dc:contributor.translator">
+ <xsl:if test="position() != 1">, </xsl:if>
+ <xsl:apply-templates mode="person" />
+ </xsl:for-each>
+ </span>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="text()" mode="person">
+ <xsl:value-of select="wl:person_name(.)" />
+</xsl:template>
+
+
<!-- ================ -->
<!-- = IGNORED TAGS = -->
<!-- ================ -->
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:wl="http://wolnelektury.pl/functions" >
+ xmlns:wl="http://wolnelektury.pl/functions"
+ xmlns:dc="http://purl.org/dc/elements/1.1/" >
<xsl:output encoding="utf-8" method="text" />
<!-- = (can contain block tags, paragraph tags, standalone tags and special tags) = -->
<!-- ============================================================================== -->
<xsl:template match="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny">
-<xsl:if test="nazwa_utworu"><xsl:apply-templates select="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul" mode="header" /></xsl:if>
+<xsl:if test="nazwa_utworu">
+ <xsl:apply-templates select="autor_utworu|dzielo_nadrzedne|nazwa_utworu|podtytul" mode="header" />
+ <xsl:call-template name="translators" />
+ <xsl:text>
+</xsl:text>
+</xsl:if>
+<xsl:apply-templates />
<xsl:text>
</xsl:text>
-<xsl:apply-templates />
</xsl:template>
<!-- ========================================== -->
<!-- Title page -->
<xsl:template match="autor_utworu" mode="header">
+<xsl:apply-templates mode="inline" />
<xsl:text>
</xsl:text>
-<xsl:apply-templates mode="inline" />
</xsl:template>
<xsl:template match="nazwa_utworu" mode="header">
+<xsl:apply-templates mode="inline" />
<xsl:text>
-
</xsl:text>
-<xsl:apply-templates mode="inline" />
</xsl:template>
<xsl:template match="dzielo_nadrzedne" mode="header">
+<xsl:apply-templates mode="inline" />
<xsl:text>
-
</xsl:text>
-<xsl:apply-templates mode="inline" />
</xsl:template>
<xsl:template match="podtytul" mode="header">
+<xsl:apply-templates mode="inline" />
<xsl:text>
</xsl:text>
-<xsl:apply-templates mode="inline" />
</xsl:template>
<!-- Section headers (included in index)-->
<xsl:template match="motyw" mode="inline" />
+<xsl:template name="translators">
+ <xsl:if test="//dc:contributor.translator">
+ <text>tłum. </text>
+ <xsl:for-each select="//dc:contributor.translator/text()">
+ <xsl:if test="position() != 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="wl:person_name(.)" />
+ </xsl:for-each>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+</xsl:template>
+
<!-- ================ -->
<!-- = IGNORED TAGS = -->
except:
pass
outfile = os.path.join(output_dir, slug + '.epub')
- epub.transform(provider, file_path=main_input, output_file=outfile, cover_fn=cover.asbis_cover)
+ epub.transform(provider, file_path=main_input, output_file=outfile,
+ cover_fn=cover.asbis_cover, flags=('less-advertising',))
except ParseError, e:
print '%(file)s:%(name)s:%(message)s' % {
'file': main_input,