X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/aa38c96c206a93c2e0118fde1638d5adea609336..d13884c8db4b387b360189b5d97ca840bcbc4cd4:/lib/librarian/book2html.xslt?ds=sidebyside diff --git a/lib/librarian/book2html.xslt b/lib/librarian/book2html.xslt index aa9aa0f18..07c560c8a 100644 --- a/lib/librarian/book2html.xslt +++ b/lib/librarian/book2html.xslt @@ -1,17 +1,188 @@ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wl="http://wolnelektury.pl/functions" > -<xsl:output method="xml" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" indent="yes" /> +<xsl:output encoding="utf-8" indent="yes" omit-xml-declaration = "yes" version="2.0" /> <xsl:template match="utwor"> - <html> + <!-- <html> <head> - <title>book2html output</title> + <title>KsiÄ Å¼ka z serwisu WolneLektury.pl</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <link rel="stylesheet" href="master.css" type="text/css" media="all" charset="utf-8" /> </head> - <body> + <style> + body { + font-size: 14px; + font: Georgia, "Times New Roman", serif; + line-height: 1.5em; + margin: 3em; + max-width: 36em; + } + + a { + color: blue; + text-decoration: none; + } + + /* =================================================== */ + /* = Common elements: headings, paragraphs and lines = */ + /* =================================================== */ + h1 { + font-size: 3em; + margin: 1.5em 0; + text-align: center; + line-height: 1.5em; + font-weight: bold; + } + + h2 { + font-size: 2em; + margin: 1.5em 0 0; + font-weight: bold; + line-height: 1.5em; + } + + h3 { + font-size: 1.5em; + margin: 1.5em 0 0; + font-weight: normal; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + margin: 1.5em 0 0; + line-height: 1.5em; + } + + p { + margin: 0; + } + + /* ======================== */ + /* = Footnotes and themes = */ + /* ======================== */ + .theme-begin { + border-left: 0.1em solid #DDDDDD; + color: #666; + float: right; + margin: 0 -9.5em 0 0; + padding: 0 0.5em; + width: 7.5em; + font-style: normal; + font-weight: normal; + font-size: 16px; + display: none; + } + + .annotation { + font-style: normal; + font-weight: normal; + font-size: 16px; + display: none; + } + + #footnotes { + display: none; + } + + #footnotes .annotation { + display: block; + float: left; + width: 2.5em; + clear: both; + } + + #footnotes div { + margin: 1.5em 0 0 0; + } + + #footnotes p { + margin-left: 2.5em; + } + + /* =================== */ + /* = Custom elements = */ + /* =================== */ + span.author { + font-size: 0.5em; + display: block; + line-height: 1.5em; + margin-bottom: 0.25em; + } + + span.collection { + font-size: 0.375em; + display: block; + line-height: 1.5em; + margin-bottom: -0.25em; + } + + span.subtitle { + font-size: 0.5em; + display: block; + line-height: 1.5em; + margin-top: -0.25em; + } + + div.didaskalia { + font-style: italic; + margin: 0.5em 0 0; + } + + div.kwestia { + margin: 0.5em 0 0; + } + + div.stanza { + margin: 1.5em 0 0; + } + + div.kwestia div.stanza { + margin: 0; + } + + p.paragraph { + text-align: justify; + margin: 1.5em 0 0; + } + + p.motto { + text-align: justify; + font-style: italic; + margin: 1.5em 0 0; + } + + p.motto_podpis { + font-size: 0.875em; + } + + div.fragment { + border-bottom: 0.1em solid #999; + padding-bottom: 1.5em; + } + + div.note p, div.note p.paragraph { + text-align: right; + font-style: italic; + } + + hr.spacer { + height: 3em; + visibility: hidden; + } + + .anchor { + display: none; + } + + #toc { + display: none; + } + </style> + <body> --> + <div id="book-text"> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" /> <xsl:if test="count(descendant::*[self::pe or self::pa or self::pr or self::pt][not(parent::extra)])"> <div id="footnotes"> @@ -32,8 +203,9 @@ </xsl:for-each> </div> </xsl:if> - </body> - </html> + </div> + <!-- </body> + </html> --> </xsl:template> @@ -143,23 +315,23 @@ <xsl:choose> <xsl:when test="count(br) > 0"> <xsl:call-template name="verse"> - <xsl:with-param name="line-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" /> - <xsl:with-param name="line-number" select="1" /> + <xsl:with-param name="verse-content" select="br[1]/preceding-sibling::text() | br[1]/preceding-sibling::node()" /> + <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd'][1]" /> </xsl:call-template> <xsl:for-each select="br"> <!-- Each BR tag "consumes" text after it --> <xsl:variable name="lnum" select="count(preceding-sibling::br)" /> <xsl:call-template name="verse"> - <xsl:with-param name="line-number" select="$lnum+2" /> - <xsl:with-param name="line-content" + <xsl:with-param name="verse-content" select="following-sibling::text()[count(preceding-sibling::br) = $lnum+1] | following-sibling::node()[count(preceding-sibling::br) = $lnum+1]" /> + <xsl:with-param name="verse-type" select="following-sibling::*[count(preceding-sibling::br) = $lnum+1 and (name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd')][1]" /> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="verse"> - <xsl:with-param name="line-content" select="text() | node()" /> - <xsl:with-param name="line-number" select="1" /> + <xsl:with-param name="verse-content" select="text() | node()" /> + <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd[1]" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> @@ -167,18 +339,28 @@ </xsl:template> <xsl:template name="verse"> - <xsl:param name="line-content" /> - <xsl:param name="line-number" /> - <p> + <xsl:param name="verse-content" /> + <xsl:param name="verse-type" /> + <p class="verse"> <xsl:choose> - <xsl:when test="name($line-content) = 'wers_akap'"> + <xsl:when test="name($verse-type) = 'wers_akap'"> <xsl:attribute name="style">padding-left: 1em</xsl:attribute> </xsl:when> - <xsl:when test="name($line-content) = 'wers_wciety'"> - <xsl:attribute name="style">padding-left: <xsl:value-of select="$line-content/@typ" />em</xsl:attribute> + <xsl:when test="name($verse-type) = 'wers_wciety'"> + <xsl:choose> + <xsl:when test="$verse-content/@typ"> + <xsl:attribute name="style">padding-left: <xsl:value-of select="$verse-content/@typ" />em</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="style">padding-left: 1em</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="name($verse-type) = 'wers_cd'"> + <xsl:attribute name="style">padding-left: 12em</xsl:attribute> </xsl:when> </xsl:choose> - <xsl:apply-templates select="$line-content" mode="inline" /> + <xsl:apply-templates select="$verse-content" mode="inline" /> </p> </xsl:template> @@ -233,6 +415,14 @@ <hr class="spacer" /> </xsl:template> +<xsl:template match="sekcja_asterysk"> + <p class="spacer-asterisk">*</p> +</xsl:template> + +<xsl:template match="separator_linia"> + <hr class="spacer-line" /> +</xsl:template> + <!-- ================ --> <!-- = SPECIAL TAGS = --> @@ -240,9 +430,9 @@ <!-- Themes --> <xsl:template match="begin" mode="inline"> <xsl:variable name="mnum" select="concat('m', substring(@id, 2))" /> - <span class="theme-begin" fid="{substring(@id, 2)}"> + <a name="m{substring(@id, 2)}" class="theme-begin" fid="{substring(@id, 2)}"> <xsl:value-of select="string(following::motyw[@id=$mnum]/text())" /> - </span> + </a> </xsl:template> <xsl:template match="end" mode="inline">