X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d8609eec1d48b2a66fe2a043c5348c50edd27c1d..3578288765729e13b1dcbae2606dabf33f2f9c04:/lib/librarian/book2html.xslt?ds=sidebyside diff --git a/lib/librarian/book2html.xslt b/lib/librarian/book2html.xslt index a83cc0c06..c8cf2c979 100644 --- a/lib/librarian/book2html.xslt +++ b/lib/librarian/book2html.xslt @@ -1,24 +1,18 @@ <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" /> -<xsl:template match="text()" /> -<xsl:template match="text()" mode="inline"> - <xsl:value-of select="wl:substitute_entities(.)" /> -</xsl:template> - -<xsl:template match="extra|uwaga" /> -<xsl:template match="extra|uwaga" mode="inline" /> <xsl:template match="utwor"> - <html> + <!-- <html> <head> <title>book2html output</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> + <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"> @@ -39,11 +33,16 @@ </xsl:for-each> </div> </xsl:if> - </body> - </html> + </div> + <!-- </body> + </html> --> </xsl:template> +<!-- ============================================================================== --> +<!-- = MASTER TAG = --> +<!-- = (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"> <h1> @@ -53,9 +52,48 @@ <xsl:apply-templates /> </xsl:template> -<!-- ======================= --> -<!-- = Header (title page) = --> -<!-- ======================= --> + +<!-- ==================================================================================== --> +<!-- = BLOCK TAGS = --> +<!-- = (can contain other block tags, paragraph tags, standalone tags and special tags) = --> +<!-- ==================================================================================== --> +<xsl:template match="nota"> + <div class="note"><xsl:apply-templates /></div> +</xsl:template> + +<xsl:template match="lista_osob"> + <div class="person-list"> + <h3><xsl:value-of select="naglowek_listy" /></h3> + <ol> + <xsl:apply-templates select="lista_osoba" /> + </ol> + </div> +</xsl:template> + +<xsl:template match="dedykacja"> + <div class="dedication"><xsl:apply-templates /></div> +</xsl:template> + +<xsl:template match="kwestia"> + <div class="kwestia"> + <xsl:apply-templates select="strofa|akap" /> + </div> +</xsl:template> + +<xsl:template match="dlugi_cytat|poezja_cyt"> + <blockquote><xsl:apply-templates /></blockquote> +</xsl:template> + +<xsl:template match="motto"> + <div class="motto"><xsl:apply-templates mode="inline" /></div> +</xsl:template> + + +<!-- ========================================== --> +<!-- = PARAGRAPH TAGS = --> +<!-- = (can contain inline and special tags) = --> +<!-- ========================================== --> +<!-- Title page --> <xsl:template match="autor_utworu" mode="header"> <span class="author"><xsl:apply-templates mode="inline" /></span> </xsl:template> @@ -72,17 +110,7 @@ <span class="subtitle"><xsl:apply-templates mode="inline" /></span> </xsl:template> -<xsl:template match="nota"> - <div class="note"><xsl:apply-templates /></div> -</xsl:template> - -<xsl:template match="dedykacja"> - <div class="dedication"><xsl:apply-templates /></div> -</xsl:template> - -<!-- =================== --> -<!-- = Section headers = --> -<!-- =================== --> +<!-- Section headers (included in index)--> <xsl:template match="naglowek_akt|naglowek_czesc|srodtytul"> <h2><xsl:apply-templates mode="inline" /></h2> </xsl:template> @@ -95,67 +123,21 @@ <h4><xsl:apply-templates mode="inline" /></h4> </xsl:template> +<!-- Other paragraph tags --> <xsl:template match="miejsce_czas"> <p class="place-and-time"><xsl:apply-templates mode="inline" /></p> </xsl:template> -<xsl:template match="kwestia"> - <div class="kwestia"> - <xsl:apply-templates select="strofa|akap" /> - </div> -</xsl:template> - <xsl:template match="didaskalia"> <div class="didaskalia"><xsl:apply-templates mode="inline" /></div> </xsl:template> -<xsl:template match="lista_osob"> - <div class="person-list"> - <h3><xsl:value-of select="naglowek_listy" /></h3> - <ol> - <xsl:apply-templates select="lista_osoba" /> - </ol> - </div> -</xsl:template> - <xsl:template match="lista_osoba"> <li><xsl:apply-templates mode="inline" /></li> </xsl:template> -<xsl:template match="begin" mode="inline"> - <xsl:variable name="mnum" select="concat('m', substring(@id, 2))" /> - <span class="theme-begin" fid="{substring(@id, 2)}"> - <xsl:value-of select="string(following::motyw[@id=$mnum]/text())" /> - </span> -</xsl:template> - -<xsl:template match="end" mode="inline"> - <span class="theme-end" fid="{substring(@id, 2)}"> </span> -</xsl:template> - -<xsl:template match="begin|end"> - <xsl:apply-templates select='.' mode="inline" /> -</xsl:template> - -<xsl:template name="verse"> - <xsl:param name="line-content" /> - <xsl:param name="line-number" /> - <p> - <xsl:choose> - <xsl:when test="name($line-content) = 'wers_akap'"> - <xsl:attribute name="style">indent: 1em</xsl:attribute> - </xsl:when> - <xsl:when test="name($line-content) = 'wers_wciety'"> - <xsl:attribute name="style">indent: 2em</xsl:attribute> - </xsl:when> - </xsl:choose> - <xsl:apply-templates select="$line-content" mode="inline" /> - </p> -</xsl:template> - -<xsl:template match="pa|pe|pr|pt" mode="inline"> - <a name="{concat('anchor-', generate-id(.))}" /> - <a href="{concat('#footnote-', generate-id(.))}" class="annotation">[<xsl:number value="count(preceding::*[self::pa or self::pe or self::pr or self::pt]) + 1" />]</a> +<xsl:template match="akap|akap_dialog|akap_cd"> + <p class="paragraph"><xsl:apply-templates mode="inline" /></p> </xsl:template> <xsl:template match="strofa"> @@ -167,7 +149,7 @@ <xsl:with-param name="line-number" select="1" /> </xsl:call-template> <xsl:for-each select="br"> - <!-- Każdy BR "zjada" to co jest za nim --> + <!-- 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" /> @@ -186,26 +168,119 @@ </div> </xsl:template> -<xsl:template match="akap|akap_dialog|akap_cd"> - <p class="paragraph"><xsl:apply-templates mode="inline" /></p> +<xsl:template name="verse"> + <xsl:param name="line-content" /> + <xsl:param name="line-number" /> + <p class="verse"> + <xsl:choose> + <xsl:when test="name($line-content) = '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> + </xsl:choose> + <xsl:apply-templates select="$line-content" mode="inline" /> + </p> </xsl:template> -<xsl:template match="motyw" mode="inline" /> +<xsl:template match="motto_podpis"> + <p class="motto_podpis"><xsl:apply-templates mode="inline" /></p> +</xsl:template> -<xsl:template match="dlugi_cytat"> - <blockquote><xsl:apply-templates /></blockquote> + +<!-- ================================================ --> +<!-- = INLINE TAGS = --> +<!-- = (contain other inline tags and special tags) = --> +<!-- ================================================ --> +<!-- Annotations --> +<xsl:template match="pa|pe|pr|pt" mode="inline"> + <a name="{concat('anchor-', generate-id(.))}" /> + <a href="{concat('#footnote-', generate-id(.))}" class="annotation">[<xsl:number value="count(preceding::*[self::pa or self::pe or self::pr or self::pt]) + 1" />]</a> </xsl:template> -<xsl:template match="motto"> - <p class="motto"><xsl:apply-templates mode="inline" /></p> +<!-- Other inline tags --> +<xsl:template match="mat" mode="inline"> + <em class="math"><xsl:apply-templates mode="inline" /></em> </xsl:template> -<xsl:template match="motto_podpis"> - <p class="motto_podpis"><xsl:apply-templates mode="inline" /></p> +<xsl:template match="didask_tekst" mode="inline"> + <em class="didaskalia"><xsl:apply-templates mode="inline" /></em> +</xsl:template> + +<xsl:template match="slowo_obce" mode="inline"> + <em class="foreign-word"><xsl:apply-templates mode="inline" /></em> </xsl:template> +<xsl:template match="tytul_dziela" mode="inline"> + <em class="book-title"> + <xsl:if test="@typ = '1'">â</xsl:if><xsl:apply-templates mode="inline" /><xsl:if test="@typ = '1'">â</xsl:if> + </em> +</xsl:template> + +<xsl:template match="wyroznienie" mode="inline"> + <em class="author-emphasis"><xsl:apply-templates mode="inline" /></em> +</xsl:template> + +<xsl:template match="osoba" mode="inline"> + <em class="person"><xsl:apply-templates mode="inline" /></em> +</xsl:template> + + +<!-- ============================================== --> +<!-- = STANDALONE TAGS = --> +<!-- = (cannot contain any other tags) = --> +<!-- ============================================== --> <xsl:template match="sekcja_swiatlo"> <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 = --> +<!-- ================ --> +<!-- Themes --> +<xsl:template match="begin" mode="inline"> + <xsl:variable name="mnum" select="concat('m', 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())" /> + </a> +</xsl:template> + +<xsl:template match="end" mode="inline"> + <span class="theme-end" fid="{substring(@id, 2)}"> </span> +</xsl:template> + +<xsl:template match="begin|end"> + <xsl:apply-templates select='.' mode="inline" /> +</xsl:template> + +<xsl:template match="motyw" mode="inline" /> + + +<!-- ================ --> +<!-- = IGNORED TAGS = --> +<!-- ================ --> +<xsl:template match="extra|uwaga" /> +<xsl:template match="extra|uwaga" mode="inline" /> + + +<!-- ======== --> +<!-- = TEXT = --> +<!-- ======== --> +<xsl:template match="text()" /> +<xsl:template match="text()" mode="inline"> + <xsl:value-of select="wl:substitute_entities(.)" /> +</xsl:template> + + </xsl:stylesheet> +