1.1 --- a/helpers/mimeXhtmlPart-make-paragraphs.xsl Sun Oct 16 22:36:46 2011 +0200
1.2 +++ b/helpers/mimeXhtmlPart-make-paragraphs.xsl Sun Oct 16 23:41:04 2011 +0200
1.3 @@ -7,22 +7,14 @@
1.4 xmlns:svg="http://www.w3.org/2000/svg"
1.5 xmlns:xs="http://www.w3.org/2001/XMLSchema"
1.6 xmlns:o="https://trac.frantovo.cz/odstavcovac-TODO-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-/wiki/xmlns/odstavcovac"
1.7 - exclude-result-prefixes="fn h xs">
1.8 + exclude-result-prefixes="fn h xs o">
1.9 <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
1.10
1.11 + <xsl:param name="cssTřída"/>
1.12
1.13 <!-- Celý dokument -->
1.14 <xsl:template match="/">
1.15 <html>
1.16 - <head>
1.17 - <style type="text/css">
1.18 - .mešuge {
1.19 - background-color: #afa;
1.20 - border: 1px solid #55f;
1.21 - }
1.22 - </style>
1.23 - </head>
1.24 -
1.25 <body>
1.26
1.27 <xsl:variable name="prvníKolo">
1.28 @@ -38,6 +30,15 @@
1.29 </body>
1.30 </html>
1.31 </xsl:template>
1.32 +
1.33 +
1.34 + <!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: -->
1.35 + <xsl:template match="*" mode="kopíruj">
1.36 + <xsl:element name="{name()}">
1.37 + <xsl:copy-of select="@*"/>
1.38 + <xsl:apply-templates/>
1.39 + </xsl:element>
1.40 + </xsl:template>
1.41
1.42
1.43 <!-- Mezi odstavci je prázdný řádek, můžou být mezery/tabulátory. -->
1.44 @@ -157,7 +158,7 @@
1.45 <xsl:copy-of select="."/>
1.46 </xsl:element>
1.47 </xsl:when>
1.48 - <xsl:otherwise>
1.49 + <xsl:otherwise>
1.50 <xsl:copy-of select="."/>
1.51 </xsl:otherwise>
1.52 </xsl:choose>
1.53 @@ -214,9 +215,12 @@
1.54 </xsl:template>
1.55 <!-- Převedeme z <o:odstavec/> na <p/> -->
1.56 <xsl:template match="o:odstavec" mode="třetíKolo">
1.57 - <p class="mešuge">
1.58 - <xsl:copy-of select="child::node()"/>
1.59 - </p>
1.60 + <xsl:element name="p">
1.61 + <xsl:if test="$cssTřída">
1.62 + <xsl:attribute name="class"><xsl:value-of select="$cssTřída"/></xsl:attribute>
1.63 + </xsl:if>
1.64 + <xsl:apply-templates select="child::node()" mode="kopíruj"/>
1.65 + </xsl:element>
1.66 </xsl:template>
1.67 <!-- Všechno ostatní zkopírujeme, jak je. -->
1.68 <xsl:template match="*" mode="třetíKolo">
2.1 --- a/helpers/mimeXhtmlPart.xsl Sun Oct 16 22:36:46 2011 +0200
2.2 +++ b/helpers/mimeXhtmlPart.xsl Sun Oct 16 23:41:04 2011 +0200
2.3 @@ -16,6 +16,7 @@
2.4
2.5
2.6 <xsl:param name="title"/>
2.7 + <xsl:param name="headComment"/>
2.8 <xsl:param name="isRoot"/>
2.9 <xsl:param name="urlBase"/>
2.10 <xsl:param name="wwwRead"/>
2.11 @@ -27,13 +28,15 @@
2.12 <html>
2.13 <head>
2.14 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
2.15 - <meta http-equiv="X-NNTP-Generated" content="{fn:current-dateTime()}" />
2.16 <xsl:if test="$urlBase">
2.17 <base href="{$urlBase}"/>
2.18 </xsl:if>
2.19 <xsl:if test="$title">
2.20 <title><xsl:value-of select="$title"/></title>
2.21 </xsl:if>
2.22 + <xsl:if test="$headComment">
2.23 + <xsl:comment><xsl:value-of select="$headComment"/></xsl:comment>
2.24 + </xsl:if>
2.25 <style type="text/css">
2.26 body {
2.27 font-family: sans-serif;
2.28 @@ -68,21 +71,14 @@
2.29 a img {
2.30 border: none;
2.31 }
2.32 -
2.33 - /** TODO: smazat */
2.34 - .mešuge {
2.35 - background-color: #afa;
2.36 - border: 1px solid #55f;
2.37 - }
2.38 </style>
2.39 </head>
2.40 <body>
2.41 <xsl:if test="$title and $isRoot">
2.42 <h1><xsl:value-of select="$title"/></h1>
2.43 </xsl:if>
2.44 - <xsl:call-template name="zpracujTělo">
2.45 - <xsl:with-param name="prvek" select="h:html/h:body/node()[1]"/>
2.46 - </xsl:call-template>
2.47 +
2.48 + <xsl:apply-templates select="h:html/h:body"/>
2.49
2.50 <xsl:if test="$wwwRead or $wwwPost">
2.51 <div class="wwwLinks">
2.52 @@ -140,153 +136,13 @@
2.53 name() = 'code' or
2.54 name() = 'blockquote'">
2.55 <xsl:element name="{name()}">
2.56 - <xsl:apply-templates/>
2.57 + <xsl:copy-of select="."/>
2.58 </xsl:element>
2.59 </xsl:when>
2.60 <xsl:otherwise>
2.61 - <xsl:value-of select="."/>
2.62 + <xsl:apply-templates/>
2.63 </xsl:otherwise>
2.64 </xsl:choose>
2.65 </xsl:template>
2.66 -
2.67 - <!--
2.68 - Z neuzavřeného (nevalidně se vyskytujícího v body) textu uděláme odstavce.
2.69 - -->
2.70 - <xsl:template name="zpracujTělo">
2.71 - <xsl:param name="prvek"/>
2.72 - <xsl:param name="vnořeno" select="false()"/>
2.73 - <xsl:if test="$prvek">
2.74 - <xsl:choose>
2.75 - <xsl:when test="$prvek/self::text()">
2.76 - <!--
2.77 - Textový uzel → budeme dělat odstavce
2.78 - (rekurzivně se opět zavolá šablona zpracujTělo)
2.79 - -->
2.80 - <xsl:call-template name="dělejOdstavce">
2.81 - <xsl:with-param name="blokTextu" select="$prvek"/>
2.82 - <xsl:with-param name="vnořeno" select="$vnořeno"/>
2.83 - </xsl:call-template>
2.84 -
2.85 - <!--
2.86 - <xsl:variable name="navázat" as="xs:boolean">
2.87 - <xsl:call-template name="navázat">
2.88 - <xsl:with-param name="blokTextu" select="$prvek"/>
2.89 - </xsl:call-template>
2.90 - </xsl:variable>
2.91 -
2.92 - Někdy zpracujTělo dalšího prvku
2.93 - <xsl:if test="not($navázat)">[další:]
2.94 - <xsl:call-template name="zpracujTělo">
2.95 - <xsl:with-param name="prvek" select="$prvek/following-sibling::node()[1]"/>
2.96 - <xsl:with-param name="vnořeno" select="$vnořeno"/>
2.97 - </xsl:call-template>
2.98 - </xsl:if>
2.99 - -->
2.100 -
2.101 - </xsl:when>
2.102 - <xsl:otherwise>
2.103 - <!--
2.104 - Jiný uzel → aplikujeme obecné šablony
2.105 - a zpracujeme následující uzel.
2.106 - -->
2.107 - <xsl:apply-templates select="$prvek"/>
2.108 - <xsl:call-template name="zpracujTělo">
2.109 - <xsl:with-param name="prvek" select="$prvek/following-sibling::node()[1]"/>
2.110 - <xsl:with-param name="vnořeno" select="$vnořeno"/>
2.111 - </xsl:call-template>
2.112 - </xsl:otherwise>
2.113 - </xsl:choose>
2.114 - </xsl:if>
2.115 - </xsl:template>
2.116 -
2.117 - <xsl:variable name="oddělovač" select="'\n\s*\n\s*'"/>
2.118 -
2.119 - <xsl:template name="navázat" as="xs:boolean">
2.120 - <xsl:param name="blokTextu"/>
2.121 - <xsl:variable name="dalšíUzel" select="$blokTextu/following-sibling::node()[1]"/>
2.122 - <xsl:sequence select="
2.123 - not(fn:matches($blokTextu, concat('.*', $oddělovač ,'$'))) and
2.124 - $dalšíUzel and
2.125 - not(
2.126 - $dalšíUzel/name() = 'p' or
2.127 - $dalšíUzel/name() = 'div' or
2.128 - $dalšíUzel/name() = 'h1' or
2.129 - $dalšíUzel/name() = 'h2' or
2.130 - $dalšíUzel/name() = 'h3' or
2.131 - $dalšíUzel/name() = 'h4' or
2.132 - $dalšíUzel/name() = 'h5' or
2.133 - $dalšíUzel/name() = 'h6' or
2.134 - $dalšíUzel/name() = 'pre' or
2.135 - $dalšíUzel/name() = 'table' or
2.136 - $dalšíUzel/name() = 'blockquote' or
2.137 - $dalšíUzel/name() = 'hr'
2.138 - )
2.139 - "/>
2.140 - </xsl:template>
2.141 -
2.142 - <xsl:template name="dělejOdstavce">
2.143 - <xsl:param name="blokTextu"/>
2.144 - <xsl:param name="vnořeno" select="false()"/>
2.145 -
2.146 - <xsl:variable name="dalšíUzel" select="$blokTextu/following-sibling::node()[1]"/>
2.147 -
2.148 - <xsl:variable name="navázat" as="xs:boolean">
2.149 - <xsl:call-template name="navázat">
2.150 - <xsl:with-param name="blokTextu" select="$blokTextu"/>
2.151 - </xsl:call-template>
2.152 - </xsl:variable>
2.153 -
2.154 - <xsl:for-each select="fn:tokenize($blokTextu, $oddělovač)">
2.155 - <!-- TODO: ošetřit prázdné odstavce -->
2.156 - <xsl:if test="normalize-space(.) or true()">
2.157 - <xsl:choose>
2.158 - <xsl:when test="$vnořeno">
2.159 - [
2.160 - <xsl:value-of select="."/>
2.161 - <xsl:if test="$navázat and position() = last()">
2.162 - →
2.163 - <xsl:call-template name="zpracujTělo">
2.164 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
2.165 - <xsl:with-param name="vnořeno" select="true()"/>
2.166 - </xsl:call-template>
2.167 - </xsl:if>
2.168 - ]
2.169 - [Avril:]
2.170 - <xsl:if test="not($navázat) and position() = last()">
2.171 - a→
2.172 - <xsl:call-template name="zpracujTělo">
2.173 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
2.174 - <xsl:with-param name="vnořeno" select="true()"/>
2.175 - </xsl:call-template>
2.176 - </xsl:if>
2.177 - </xsl:when>
2.178 - <xsl:otherwise>
2.179 - <p class="mešuge">
2.180 - {
2.181 - <xsl:value-of select="."/>
2.182 - <xsl:if test="$navázat and position() = last()">
2.183 - s→
2.184 - <xsl:call-template name="zpracujTělo">
2.185 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
2.186 - <xsl:with-param name="vnořeno" select="true()"/>
2.187 - </xsl:call-template>
2.188 - </xsl:if>
2.189 - }
2.190 - </p>
2.191 - [sk8:]
2.192 - <xsl:if test="not($navázat) and position() = last()">
2.193 - →
2.194 - <xsl:call-template name="zpracujTělo">
2.195 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
2.196 - <xsl:with-param name="vnořeno" select="false()"/>
2.197 - </xsl:call-template>
2.198 - </xsl:if>
2.199 - </xsl:otherwise>
2.200 - </xsl:choose>
2.201 - </xsl:if>
2.202 - </xsl:for-each>
2.203 -
2.204 - </xsl:template>
2.205 -
2.206
2.207 </xsl:stylesheet>