1.1 --- a/helpers/mimeXhtmlPart.xsl Fri Oct 14 17:50:35 2011 +0200
1.2 +++ b/helpers/mimeXhtmlPart.xsl Sun Oct 16 20:55:46 2011 +0200
1.3 @@ -72,7 +72,7 @@
1.4 /** TODO: smazat */
1.5 .mešuge {
1.6 background-color: #afa;
1.7 - border: 1px solid #5f5;
1.8 + border: 1px solid #55f;
1.9 }
1.10 </style>
1.11 </head>
1.12 @@ -162,19 +162,26 @@
1.13 Textový uzel → budeme dělat odstavce
1.14 (rekurzivně se opět zavolá šablona zpracujTělo)
1.15 -->
1.16 - <xsl:call-template name="dělejOdstavceX">
1.17 + <xsl:call-template name="dělejOdstavce">
1.18 <xsl:with-param name="blokTextu" select="$prvek"/>
1.19 <xsl:with-param name="vnořeno" select="$vnořeno"/>
1.20 </xsl:call-template>
1.21 - <!-- TODO: někdy zpracujTělo dalšího prvku -->
1.22
1.23 + <!--
1.24 <xsl:variable name="navázat" as="xs:boolean">
1.25 <xsl:call-template name="navázat">
1.26 <xsl:with-param name="blokTextu" select="$prvek"/>
1.27 </xsl:call-template>
1.28 </xsl:variable>
1.29
1.30 - <xsl:if test="not($navázat)">[not(navázat)]</xsl:if>
1.31 + Někdy zpracujTělo dalšího prvku
1.32 + <xsl:if test="not($navázat)">[další:]
1.33 + <xsl:call-template name="zpracujTělo">
1.34 + <xsl:with-param name="prvek" select="$prvek/following-sibling::node()[1]"/>
1.35 + <xsl:with-param name="vnořeno" select="$vnořeno"/>
1.36 + </xsl:call-template>
1.37 + </xsl:if>
1.38 + -->
1.39
1.40 </xsl:when>
1.41 <xsl:otherwise>
1.42 @@ -192,7 +199,7 @@
1.43 </xsl:if>
1.44 </xsl:template>
1.45
1.46 - <xsl:variable name="oddělovač" select="'\n\s+\n\s+'"/>
1.47 + <xsl:variable name="oddělovač" select="'\n\s*\n\s*'"/>
1.48
1.49 <xsl:template name="navázat" as="xs:boolean">
1.50 <xsl:param name="blokTextu"/>
1.51 @@ -217,7 +224,7 @@
1.52 "/>
1.53 </xsl:template>
1.54
1.55 - <xsl:template name="dělejOdstavceX">
1.56 + <xsl:template name="dělejOdstavce">
1.57 <xsl:param name="blokTextu"/>
1.58 <xsl:param name="vnořeno" select="false()"/>
1.59
1.60 @@ -230,90 +237,55 @@
1.61 </xsl:variable>
1.62
1.63 <xsl:for-each select="fn:tokenize($blokTextu, $oddělovač)">
1.64 - <xsl:if test="normalize-space(.)">
1.65 + <!-- TODO: ošetřit prázdné odstavce -->
1.66 + <xsl:if test="normalize-space(.) or true()">
1.67 <xsl:choose>
1.68 <xsl:when test="$vnořeno">
1.69 - <xsl:value-of select="."/>
1.70 - <xsl:if test="$navázat and position() = last()">
1.71 - <xsl:call-template name="zpracujTělo">
1.72 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.73 - </xsl:call-template>
1.74 - </xsl:if>
1.75 - </xsl:when>
1.76 - <xsl:otherwise>
1.77 - <p class="mešuge">
1.78 + [
1.79 <xsl:value-of select="."/>
1.80 <xsl:if test="$navázat and position() = last()">
1.81 + →
1.82 <xsl:call-template name="zpracujTělo">
1.83 <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.84 <xsl:with-param name="vnořeno" select="true()"/>
1.85 </xsl:call-template>
1.86 </xsl:if>
1.87 + ]
1.88 + [Avril:]
1.89 + <xsl:if test="not($navázat) and position() = last()">
1.90 + a→
1.91 + <xsl:call-template name="zpracujTělo">
1.92 + <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.93 + <xsl:with-param name="vnořeno" select="true()"/>
1.94 + </xsl:call-template>
1.95 + </xsl:if>
1.96 + </xsl:when>
1.97 + <xsl:otherwise>
1.98 + <p class="mešuge">
1.99 + {
1.100 + <xsl:value-of select="."/>
1.101 + <xsl:if test="$navázat and position() = last()">
1.102 + s→
1.103 + <xsl:call-template name="zpracujTělo">
1.104 + <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.105 + <xsl:with-param name="vnořeno" select="true()"/>
1.106 + </xsl:call-template>
1.107 + </xsl:if>
1.108 + }
1.109 </p>
1.110 + [sk8:]
1.111 + <xsl:if test="not($navázat) and position() = last()">
1.112 + →
1.113 + <xsl:call-template name="zpracujTělo">
1.114 + <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.115 + <xsl:with-param name="vnořeno" select="false()"/>
1.116 + </xsl:call-template>
1.117 + </xsl:if>
1.118 </xsl:otherwise>
1.119 </xsl:choose>
1.120 </xsl:if>
1.121 </xsl:for-each>
1.122
1.123 - <xsl:if test="not($navázat)">
1.124 - <xsl:call-template name="zpracujTělo">
1.125 - <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.126 - </xsl:call-template>
1.127 - </xsl:if>
1.128 - </xsl:template>
1.129 -
1.130 -
1.131 -
1.132 -
1.133 -
1.134 -
1.135 - <xsl:template name="dělejOdstavce">
1.136 - <xsl:param name="blokTextu"/>
1.137 - <xsl:variable name="oddělovač" select="'\n\s+\n\s+'"/>
1.138 - <xsl:for-each select="fn:tokenize(., $oddělovač)">
1.139 - <xsl:if test="normalize-space(.)">
1.140 - <p class="mešuge">
1.141 - <xsl:value-of select="."/>
1.142 - <!--
1.143 - Toto je poslední odstavec bloku textu
1.144 - a blok nekončí dvěma konci řádku →
1.145 - může za ním následovat značka (např. odkaz nebo tučné písmo)
1.146 - vnořená do téhož odstavce
1.147 - -->
1.148 - <xsl:if test="
1.149 - position() = last() and
1.150 - not(fn:matches($blokTextu, concat('.*', $oddělovač ,'$')))
1.151 - ">
1.152 - <xsl:variable name="n" select="$blokTextu/following-sibling::*[1]"/>
1.153 - <xsl:variable name="nn" select="$n/name()"/>
1.154 - <!--
1.155 - Za blokem textu nenásleduje značka, která nemůže být uvnitř odstavce.
1.156 - -->
1.157 - <xsl:if test="not(
1.158 - $nn = 'p' or
1.159 - $nn = 'div' or
1.160 - $nn = 'h1' or
1.161 - $nn = 'h2' or
1.162 - $nn = 'h3' or
1.163 - $nn = 'h4' or
1.164 - $nn = 'h5' or
1.165 - $nn = 'h6' or
1.166 - $nn = 'pre' or
1.167 - $nn = 'table' or
1.168 - $nn = 'blockquote' or
1.169 - $nn = 'hr'
1.170 - )">
1.171 - <xsl:apply-templates select="$n"/>
1.172 - </xsl:if>
1.173 -
1.174 - <xsl:call-template name="zpracujTělo">
1.175 - <xsl:with-param name="prvek" select="$blokTextu/following-sibling::node()[1]"/>
1.176 - </xsl:call-template>
1.177 -
1.178 - </xsl:if>
1.179 - </p>
1.180 - </xsl:if>
1.181 - </xsl:for-each>
1.182 </xsl:template>
1.183
1.184