X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/175c5cf4f727162fa5bddd2460d37595251bbe8e..28532fa3b437bb36b9d5c582851d3cdcf8d772ab:/src/librarian/xslt/book2html.xslt diff --git a/src/librarian/xslt/book2html.xslt b/src/librarian/xslt/book2html.xslt index 9b77b5e..c0567e8 100644 --- a/src/librarian/xslt/book2html.xslt +++ b/src/librarian/xslt/book2html.xslt @@ -185,7 +185,10 @@ <xsl:template match="motto"> <xsl:call-template name="section-anchor"/> - <div class="motto"><xsl:apply-templates /></div> + <div class="motto"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates /> + </div> </xsl:template> <xsl:template match="ilustr" mode="inline"> @@ -194,6 +197,7 @@ <xsl:template match="ilustr"> <div> + <xsl:call-template name="block-args" /> <xsl:attribute name="class"> <xsl:text>ilustr </xsl:text> @@ -238,6 +242,7 @@ <xsl:template match="animacja"> <div class="animacja cycle-slideshow" data-cycle-pause-on-hover="true" data-cycle-next="> img" data-cycle-fx="fadeout" data-cycle-paused="true"> + <xsl:call-template name="block-args" /> <xsl:apply-templates/> </div> </xsl:template> @@ -249,64 +254,94 @@ <!-- ========================================== --> <!-- Title page --> <xsl:template match="autor_utworu" mode="header"> - <span class="author"><xsl:apply-templates mode="inline" /></span> + <span class="author"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </span> </xsl:template> <xsl:template match="nazwa_utworu" mode="header"> - <span class="title"><xsl:apply-templates mode="inline" /></span> + <span class="title"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </span> </xsl:template> <xsl:template match="dzielo_nadrzedne" mode="header"> - <span class="collection"><xsl:apply-templates mode="inline" /></span> + <span class="collection"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </span> </xsl:template> <xsl:template match="podtytul" mode="header"> - <span class="subtitle"><xsl:apply-templates mode="inline" /></span> + <span class="subtitle"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </span> </xsl:template> <!-- Section headers (included in index)--> <xsl:template match="naglowek_akt|naglowek_czesc|srodtytul"> <xsl:call-template name="section-anchor"/> - <h2><xsl:apply-templates mode="inline" /></h2> + <h2> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </h2> </xsl:template> <xsl:template match="podtytul_akt|podtytul_czesc"> <div class="subtitle2"> + <xsl:call-template name="block-args" /> <xsl:apply-templates mode="inline" /> </div> </xsl:template> <xsl:template match="naglowek_scena|naglowek_rozdzial"> <xsl:call-template name="section-anchor"/> - <h3><xsl:apply-templates mode="inline" /></h3> + <h3> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </h3> </xsl:template> <xsl:template match="podtytul_scena|podtytul_rozdzial"> <div class="subtitle3"> + <xsl:call-template name="block-args" /> <xsl:apply-templates mode="inline" /> </div> </xsl:template> <xsl:template match="naglowek_osoba|naglowek_podrozdzial"> - <xsl:call-template name="section-anchor"/> - <h4><xsl:apply-templates mode="inline" /></h4> + <xsl:call-template name="section-anchor"/> + <h4> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </h4> </xsl:template> <xsl:template match="podtytul_podrozdzial"> <div class="subtitle4"> + <xsl:call-template name="block-args" /> <xsl:apply-templates mode="inline" /> </div> </xsl:template> <!-- Other paragraph tags --> <xsl:template match="miejsce_czas"> - <xsl:call-template name="section-anchor"/> - <p class="place-and-time"><xsl:apply-templates mode="inline" /></p> + <xsl:call-template name="section-anchor"/> + <p class="place-and-time"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </p> </xsl:template> <xsl:template match="didaskalia"> - <xsl:call-template name="section-anchor"/> - <div class="didaskalia"><xsl:apply-templates mode="inline" /></div> + <xsl:call-template name="section-anchor"/> + <div class="didaskalia"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </div> </xsl:template> <xsl:template match="lista_osoba"> @@ -315,6 +350,7 @@ <xsl:template match="akap|akap_dialog|akap_cd"> <p class="paragraph"> + <xsl:call-template name="block-args" /> <xsl:call-template name="section-anchor"/> <xsl:apply-templates mode="inline" /> </p> @@ -325,13 +361,14 @@ </xsl:template> <xsl:template match="strofa"> - <div class="stanza"> + <div class="stanza"> + <xsl:call-template name="block-args" /> <xsl:call-template name="section-anchor"/> <xsl:choose> <xsl:when test="count(br) > 0"> <xsl:call-template name="verse"> <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' or name() = 'wers_do_prawej'][1]" /> + <xsl:with-param name="verse-type" select="br[1]/preceding-sibling::*[name() = 'wers_wciety' or name() = 'wers_akap' or name() = 'wers_cd' or name() = 'wers_do_prawej' or name() = 'wers_srodek'][1]" /> </xsl:call-template> <xsl:for-each select="br"> <!-- Each BR tag "consumes" text after it --> @@ -339,14 +376,14 @@ <xsl:call-template name="verse"> <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' or name() = 'wers_do_prawej')][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' or name() = 'wers_do_prawej' or name() = 'wers_srodek')][1]" /> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:call-template name="verse"> <xsl:with-param name="verse-content" select="text() | node()" /> - <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd|wers_do_prawej[1]" /> + <xsl:with-param name="verse-type" select="wers_wciety|wers_akap|wers_cd|wers_do_prawej|wers_srodek[1]" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> @@ -377,6 +414,9 @@ <xsl:when test="name($verse-type) = 'wers_do_prawej'"> <xsl:attribute name="style">text-align: right</xsl:attribute> </xsl:when> + <xsl:when test="name($verse-type) = 'wers_srodek'"> + <xsl:attribute name="style">text-align: center</xsl:attribute> + </xsl:when> </xsl:choose> <xsl:apply-templates select="$verse-content" mode="inline" /> </div> @@ -384,17 +424,26 @@ <xsl:template match="motto_podpis"> <xsl:call-template name="section-anchor"/> - <p class="motto_podpis"><xsl:apply-templates mode="inline" /></p> + <p class="motto_podpis"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates mode="inline" /> + </p> </xsl:template> <xsl:template match="tabela|tabelka"> <xsl:call-template name="section-anchor"/> <xsl:choose> <xsl:when test="@ramka = '1'"> - <table class="border"><xsl:apply-templates /></table> + <table class="border"> + <xsl:call-template name="block-args" /> + <xsl:apply-templates /> + </table> </xsl:when> <xsl:otherwise> - <table><xsl:apply-templates /></table> + <table> + <xsl:call-template name="block-args" /> + <xsl:apply-templates /> + </table> </xsl:otherwise> </xsl:choose> </xsl:template> @@ -430,7 +479,7 @@ <!-- Other inline tags --> <xsl:template match="mat" mode="inline"> - <math xmlns="http://www.w3.org/1998/Math/MathML"><xsl:copy-of select="*" /></math> + <math xmlns="http://www.w3.org/1998/Math/MathML"><xsl:copy-of select="*|text()" /></math> </xsl:template> <xsl:template match="didask_tekst" mode="inline"> @@ -463,6 +512,14 @@ <em class="person"><xsl:apply-templates mode="inline" /></em> </xsl:template> +<xsl:template match="www" mode="inline"> + <a target="_blank"> + <xsl:attribute name="href"> + <xsl:value-of select="text()"/> + </xsl:attribute> + <xsl:apply-templates mode="inline" /> + </a> +</xsl:template> <!-- ============================================== --> <!-- = STANDALONE TAGS = --> @@ -526,6 +583,47 @@ <xsl:value-of select="wl:person_name(.)" /> </xsl:template> +<xsl:template match="rownolegle"> + <xsl:apply-templates mode="rownolegle" /> +</xsl:template> +<xsl:template match="*" mode="rownolegle"> + <!-- is it last? --> + <div> + <xsl:attribute name="class"> + <xsl:text>rownolegly-blok</xsl:text> + <xsl:if test="not(following-sibling::*)"> + <xsl:text> last</xsl:text> + </xsl:if> + <xsl:if test="not(preceding-sibling::*)"> + <xsl:text> first</xsl:text> + </xsl:if> + </xsl:attribute> + <xsl:attribute name="style"> + <xsl:text>border-left: 2px solid red; padding-left: .5em;</xsl:text> + <xsl:if test="not(following-sibling::*)"> + <xsl:text> border-radius: 0 0 0 .75em;</xsl:text> + </xsl:if> + <xsl:if test="not(preceding-sibling::*)"> + <xsl:text> border-radius: .75em 0 0 0;</xsl:text> + </xsl:if> + </xsl:attribute> + <xsl:apply-templates match="." /> + </div> +</xsl:template> + +<xsl:template match="tab" mode="inline"> + <span> + <xsl:choose> + <xsl:when test="@szer"> + <xsl:attribute name="style">display: inline-block; width: <xsl:value-of select="@szer" />em</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="style">display: inline-block; width: 1em</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </span> +</xsl:template> + <!-- ================ --> <!-- = IGNORED TAGS = --> @@ -559,4 +657,21 @@ <a name="{concat('sec', count(ancestor-or-self::*[last()-2]/preceding-sibling::*) + 1)}" /> </xsl:template> +<xsl:template name="block-args"> + <xsl:if test="@id"> + <xsl:attribute name="id"> + <xsl:text>wl-</xsl:text> + <xsl:value-of select="@id"/> + </xsl:attribute> + </xsl:if> +</xsl:template> + +<xsl:template match="numeracja"> + <span class="numeracja"> + <xsl:attribute name="data-start"> + <xsl:value-of select="@start" /> + </xsl:attribute> + </span> +</xsl:template> + </xsl:stylesheet>