From: Marek Stępniowski <marek@stepniowski.com> Date: Sun, 31 Aug 2008 12:38:58 +0000 (+0200) Subject: Now stylesheet master.css is applied to all media types. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/fdab956ee44a8ba9fe306e37a959aa85aa27cbdd?hp=3ef92f8d83bda87d43e1f36a79e5c1e7d853365a Now stylesheet css is applied to all media types. Moved converting custom text entities (like '...', '--', and '---') to custom XPath function substitute_entities in namespace http://wolnelektury.pl/functions (namespace is subject to change). --- diff --git a/bin/book2html.py b/bin/book2html.py index f66117d5d..3907de38c 100755 --- a/bin/book2html.py +++ b/bin/book2html.py @@ -9,6 +9,29 @@ import sys from lxml import etree +ENTITY_SUBSTITUTIONS = [ + (u'---', u'â'), + (u'--', u'â'), + (u'...', u'â¦'), + (u',,', u'â'), + (u'"', u'â'), +] + + +def substitute_entities(context, text): + """XPath extension function converting all entites in passed text.""" + if isinstance(text, list): + text = ''.join(text) + for entity, substitutution in ENTITY_SUBSTITUTIONS: + text = text.replace(entity, substitutution) + return text + + +# Register substitute_entities function with lxml +ns = etree.FunctionNamespace('http://wolnelektury.pl/functions') +ns['substitute_entities'] = substitute_entities + + def transform(input_filename, output_filename): """Transforms file input_filename in XML to output_filename in XHTML.""" # Parse XSLT @@ -21,7 +44,7 @@ def transform(input_filename, output_filename): f = open(input_filename, 'r') for line in f: line = line.decode('utf-8') - line = expr.sub(u'<br/>\n', line).replace(u'---', u'â').replace(u',,', u'â') + line = expr.sub(u'<br/>\n', line) doc_file.write(line.encode('utf-8')) f.close() diff --git a/bin/book2html.xslt b/bin/book2html.xslt index 158caebf5..86d27d6f2 100644 --- a/bin/book2html.xslt +++ b/bin/book2html.xslt @@ -1,9 +1,12 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> +<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: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" /> @@ -13,27 +16,29 @@ <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="screen" charset="utf-8" /> + <link rel="stylesheet" href="master.css" type="text/css" media="all" charset="utf-8" /> </head> <body> <xsl:apply-templates select="powiesc|opowiadanie|liryka_l|liryka_lp|dramat_wierszowany_l|dramat_wierszowany_lp|dramat_wspolczesny" /> - <div id="footnotes"> - <h3>Przypisy</h3> - <xsl:for-each select="descendant::*[self::pe or self::pa or self::pr or self::pt][not(parent::extra)]"> - <div> - <a name="{concat('footnote-', generate-id(.))}" /> - <a href="{concat('#anchor-', generate-id(.))}" class="annotation">[<xsl:number value="count(preceding::*[self::pa or self::pe or self::pr or self::pt]) + 1" />]</a> - <xsl:choose> - <xsl:when test="count(akap|akap_cd|strofa) = 0"> - <p><xsl:apply-templates select="text()|*" mode="inline" /></p> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="text()|*" mode="inline" /> - </xsl:otherwise> - </xsl:choose> - </div> - </xsl:for-each> - </div> + <xsl:if test="count(descendant::*[self::pe or self::pa or self::pr or self::pt][not(parent::extra)])"> + <div id="footnotes"> + <h3>Przypisy</h3> + <xsl:for-each select="descendant::*[self::pe or self::pa or self::pr or self::pt][not(parent::extra)]"> + <div> + <a name="{concat('footnote-', generate-id(.))}" /> + <a href="{concat('#anchor-', generate-id(.))}" class="annotation">[<xsl:number value="count(preceding::*[self::pa or self::pe or self::pr or self::pt]) + 1" />]</a> + <xsl:choose> + <xsl:when test="count(akap|akap_cd|strofa) = 0"> + <p><xsl:apply-templates select="text()|*" mode="inline" /></p> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="text()|*" mode="inline" /> + </xsl:otherwise> + </xsl:choose> + </div> + </xsl:for-each> + </div> + </xsl:if> </body> </html> </xsl:template> @@ -60,7 +65,7 @@ <span class="collection"><xsl:apply-templates mode="inline" /></span> </xsl:template> -<xsl:template match="naglowek_akt|naglowek_czesc"> +<xsl:template match="naglowek_akt|naglowek_czesc|srodtytul"> <h2><xsl:apply-templates mode="inline" /></h2> </xsl:template>