helpers/mimeXhtmlPart.xsl
changeset 81 b51ab80c7a9d
parent 80 1f9e5757caf4
child 83 668014315a54
     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