1.1 --- a/helpers/mimeXhtmlPart.xsl Fri Oct 14 15:36:54 2011 +0200
1.2 +++ b/helpers/mimeXhtmlPart.xsl Fri Oct 14 17:50:35 2011 +0200
1.3 @@ -72,6 +72,7 @@
1.4 /** TODO: smazat */
1.5 .mešuge {
1.6 background-color: #afa;
1.7 + border: 1px solid #5f5;
1.8 }
1.9 </style>
1.10 </head>
1.11 @@ -148,12 +149,12 @@
1.12 </xsl:choose>
1.13 </xsl:template>
1.14
1.15 -
1.16 <!--
1.17 Z neuzavřeného (nevalidně se vyskytujícího v body) textu uděláme odstavce.
1.18 -->
1.19 <xsl:template name="zpracujTělo">
1.20 <xsl:param name="prvek"/>
1.21 + <xsl:param name="vnořeno" select="false()"/>
1.22 <xsl:if test="$prvek">
1.23 <xsl:choose>
1.24 <xsl:when test="$prvek/self::text()">
1.25 @@ -163,7 +164,18 @@
1.26 -->
1.27 <xsl:call-template name="dělejOdstavceX">
1.28 <xsl:with-param name="blokTextu" select="$prvek"/>
1.29 + <xsl:with-param name="vnořeno" select="$vnořeno"/>
1.30 </xsl:call-template>
1.31 + <!-- TODO: někdy zpracujTělo dalšího prvku -->
1.32 +
1.33 + <xsl:variable name="navázat" as="xs:boolean">
1.34 + <xsl:call-template name="navázat">
1.35 + <xsl:with-param name="blokTextu" select="$prvek"/>
1.36 + </xsl:call-template>
1.37 + </xsl:variable>
1.38 +
1.39 + <xsl:if test="not($navázat)">[not(navázat)]</xsl:if>
1.40 +
1.41 </xsl:when>
1.42 <xsl:otherwise>
1.43 <!--
1.44 @@ -173,47 +185,73 @@
1.45 <xsl:apply-templates select="$prvek"/>
1.46 <xsl:call-template name="zpracujTělo">
1.47 <xsl:with-param name="prvek" select="$prvek/following-sibling::node()[1]"/>
1.48 + <xsl:with-param name="vnořeno" select="$vnořeno"/>
1.49 </xsl:call-template>
1.50 </xsl:otherwise>
1.51 </xsl:choose>
1.52 </xsl:if>
1.53 </xsl:template>
1.54
1.55 + <xsl:variable name="oddělovač" select="'\n\s+\n\s+'"/>
1.56 +
1.57 + <xsl:template name="navázat" as="xs:boolean">
1.58 + <xsl:param name="blokTextu"/>
1.59 + <xsl:variable name="dalšíUzel" select="$blokTextu/following-sibling::node()[1]"/>
1.60 + <xsl:sequence select="
1.61 + not(fn:matches($blokTextu, concat('.*', $oddělovač ,'$'))) and
1.62 + $dalšíUzel and
1.63 + not(
1.64 + $dalšíUzel/name() = 'p' or
1.65 + $dalšíUzel/name() = 'div' or
1.66 + $dalšíUzel/name() = 'h1' or
1.67 + $dalšíUzel/name() = 'h2' or
1.68 + $dalšíUzel/name() = 'h3' or
1.69 + $dalšíUzel/name() = 'h4' or
1.70 + $dalšíUzel/name() = 'h5' or
1.71 + $dalšíUzel/name() = 'h6' or
1.72 + $dalšíUzel/name() = 'pre' or
1.73 + $dalšíUzel/name() = 'table' or
1.74 + $dalšíUzel/name() = 'blockquote' or
1.75 + $dalšíUzel/name() = 'hr'
1.76 + )
1.77 + "/>
1.78 + </xsl:template>
1.79 +
1.80 <xsl:template name="dělejOdstavceX">
1.81 <xsl:param name="blokTextu"/>
1.82 - <xsl:variable name="oddělovač" select="'\n\s+\n\s+'"/>
1.83 + <xsl:param name="vnořeno" select="false()"/>
1.84 +
1.85 <xsl:variable name="dalšíUzel" select="$blokTextu/following-sibling::node()[1]"/>
1.86
1.87 - <xsl:variable name="navázat" select="
1.88 - not(fn:matches($blokTextu, concat('.*', $oddělovač ,'$'))) and
1.89 - $dalšíUzel and
1.90 - not(
1.91 - $dalšíUzel/name() = 'p' or
1.92 - $dalšíUzel/name() = 'div' or
1.93 - $dalšíUzel/name() = 'h1' or
1.94 - $dalšíUzel/name() = 'h2' or
1.95 - $dalšíUzel/name() = 'h3' or
1.96 - $dalšíUzel/name() = 'h4' or
1.97 - $dalšíUzel/name() = 'h5' or
1.98 - $dalšíUzel/name() = 'h6' or
1.99 - $dalšíUzel/name() = 'pre' or
1.100 - $dalšíUzel/name() = 'table' or
1.101 - $dalšíUzel/name() = 'blockquote' or
1.102 - $dalšíUzel/name() = 'hr'
1.103 - )
1.104 - "/>
1.105 + <xsl:variable name="navázat" as="xs:boolean">
1.106 + <xsl:call-template name="navázat">
1.107 + <xsl:with-param name="blokTextu" select="$blokTextu"/>
1.108 + </xsl:call-template>
1.109 + </xsl:variable>
1.110
1.111 <xsl:for-each select="fn:tokenize($blokTextu, $oddělovač)">
1.112 <xsl:if test="normalize-space(.)">
1.113 - <p class="mešuge">
1.114 - <xsl:value-of select="."/>
1.115 - <xsl:if test="$navázat and position() = last()">
1.116 - <xsl:apply-templates select="$dalšíUzel"/>
1.117 - </xsl:if>
1.118 - <xsl:call-template name="zpracujTělo">
1.119 - <xsl:with-param name="prvek" select="$dalšíUzel/following-sibling::node()[1]"/>
1.120 - </xsl:call-template>
1.121 - </p>
1.122 + <xsl:choose>
1.123 + <xsl:when test="$vnořeno">
1.124 + <xsl:value-of select="."/>
1.125 + <xsl:if test="$navázat and position() = last()">
1.126 + <xsl:call-template name="zpracujTělo">
1.127 + <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.128 + </xsl:call-template>
1.129 + </xsl:if>
1.130 + </xsl:when>
1.131 + <xsl:otherwise>
1.132 + <p class="mešuge">
1.133 + <xsl:value-of select="."/>
1.134 + <xsl:if test="$navázat and position() = last()">
1.135 + <xsl:call-template name="zpracujTělo">
1.136 + <xsl:with-param name="prvek" select="$dalšíUzel"/>
1.137 + <xsl:with-param name="vnořeno" select="true()"/>
1.138 + </xsl:call-template>
1.139 + </xsl:if>
1.140 + </p>
1.141 + </xsl:otherwise>
1.142 + </xsl:choose>
1.143 </xsl:if>
1.144 </xsl:for-each>
1.145