X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/648dff98814d2ddeda2f06a8c0e2fb01547fac2a..5a476eced8da266f275e1b051a601526af89e848:/lib/librarian/book2html.xslt?ds=sidebyside diff --git a/lib/librarian/book2html.xslt b/lib/librarian/book2html.xslt index f52d83089..47e126a09 100644 --- a/lib/librarian/book2html.xslt +++ b/lib/librarian/book2html.xslt @@ -3,13 +3,6 @@ <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: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> @@ -44,6 +37,10 @@ </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 +50,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,10 +108,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> - +<!-- Section headers (included in index)--> <xsl:template match="naglowek_akt|naglowek_czesc|srodtytul"> <h2><xsl:apply-templates mode="inline" /></h2> </xsl:template> @@ -84,67 +117,25 @@ <h3><xsl:apply-templates mode="inline" /></h3> </xsl:template> -<xsl:template match="naglowek_osoba"> +<xsl:template match="naglowek_osoba|naglowek_podrozdzial"> <h4><xsl:apply-templates mode="inline" /></h4> </xsl:template> -<xsl:template match="kwestia"> - <div class="kwestia"> - <xsl:apply-templates select="strofa|akap" /> - </div> +<!-- Other paragraph tags --> +<xsl:template match="miejsce_czas"> + <p class="place-and-time"><xsl:apply-templates mode="inline" /></p> </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"> @@ -156,7 +147,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" /> @@ -175,26 +166,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> + <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))" /> + <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 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> +