helpers/mimeTextPart.xsl
author František Kučera <franta-hg@frantovo.cz>
Mon, 17 Oct 2011 19:12:42 +0200
changeset 90 2ed2497d4559
parent 89 c60625d58158
child 91 70286a6cf338
permissions -rw-r--r--
Drupal: zpracování citací (blockquote), doplnění chybějících odstavců (p).
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <xsl:stylesheet version="2.0"
     3 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     4 	xmlns:fn="http://www.w3.org/2005/xpath-functions"
     5 	xmlns:h="http://www.w3.org/1999/xhtml">
     6 	<xsl:output method="text" encoding="UTF-8"/>
     7 	<xsl:strip-space elements="*"/>
     8 	
     9 	<xsl:output method="text" encoding="UTF-8"/>
    10 	<xsl:strip-space elements="*"/>
    11 	
    12 	<xsl:variable name="urlBase" select="/h:html/h:head/h:base/@href"/>
    13 	
    14 	<!-- Celý dokument -->
    15 	<xsl:template match="/">
    16 		<xsl:apply-templates select="h:html/h:body"/>
    17 	</xsl:template>
    18 
    19 	<xsl:template match="h:h1">
    20 		<xsl:value-of select="text()"/>
    21 		<xsl:text>&#10;</xsl:text>
    22 		<xsl:for-each select="1 to string-length(.)">#</xsl:for-each>		
    23 		<xsl:text>&#10;</xsl:text>
    24 		<xsl:text>&#10;</xsl:text>
    25 	</xsl:template>
    26 	
    27 	<xsl:template match="h:h2">
    28 		<xsl:value-of select="text()"/>
    29 		<xsl:text>&#10;</xsl:text>
    30 		<xsl:for-each select="1 to string-length(.)">-</xsl:for-each>		
    31 		<xsl:text>&#10;</xsl:text>
    32 		<xsl:text>&#10;</xsl:text>
    33 	</xsl:template>
    34 	
    35 	<xsl:template match="h:h3">
    36 		<xsl:for-each select="1 to 3">#</xsl:for-each>
    37 		<xsl:text> </xsl:text>
    38 		<xsl:value-of select="text()"/>
    39 		<xsl:text>&#10;</xsl:text>
    40 		<xsl:text>&#10;</xsl:text>
    41 	</xsl:template>
    42 
    43 	
    44 	<xsl:template match="h:h4">
    45 		<xsl:for-each select="1 to 4">#</xsl:for-each>
    46 		<xsl:text> </xsl:text>
    47 		<xsl:value-of select="text()"/>
    48 		<xsl:text>&#10;</xsl:text>
    49 		<xsl:text>&#10;</xsl:text>
    50 	</xsl:template>
    51 
    52 	
    53 	<xsl:template match="h:h5">
    54 		<xsl:for-each select="1 to 5">#</xsl:for-each>
    55 		<xsl:text> </xsl:text>
    56 		<xsl:value-of select="text()"/>
    57 		<xsl:text>&#10;</xsl:text>
    58 		<xsl:text>&#10;</xsl:text>
    59 	</xsl:template>
    60 	
    61 	<xsl:template match="h:h6">
    62 		<xsl:for-each select="1 to 6">#</xsl:for-each>
    63 		<xsl:text> </xsl:text>
    64 		<xsl:value-of select="text()"/>
    65 		<xsl:text>&#10;</xsl:text>
    66 		<xsl:text>&#10;</xsl:text>
    67 	</xsl:template>
    68 
    69 
    70 	<xsl:template match="h:p">
    71 		<xsl:apply-templates/>
    72 		<xsl:text>&#10;</xsl:text>
    73 		<xsl:text>&#10;</xsl:text>
    74 	</xsl:template>
    75 	
    76 	<xsl:template match="h:blockquote/h:p">
    77 		<xsl:text>&gt; </xsl:text>
    78 		<xsl:apply-templates/>
    79 		<xsl:text>&#10;</xsl:text>
    80 		<xsl:text>&#10;</xsl:text>
    81 	</xsl:template>
    82 	
    83 	<xsl:template match="h:a">
    84 		<xsl:text>"</xsl:text>
    85 		<xsl:value-of select="text()"/>
    86 		<xsl:text>" &lt;</xsl:text>
    87 		<xsl:choose>
    88 			<xsl:when test="matches(@href, '^(http:|https:|ftp:)')">
    89 				<xsl:value-of select="@href"/>
    90 			</xsl:when>
    91 			<xsl:when test="matches(@href, '^mailto:')">
    92 				<xsl:value-of select="substring-after(@href, 'mailto:')"/>
    93 			</xsl:when>
    94 			<xsl:otherwise>
    95 				<xsl:choose>
    96 					<xsl:when test="ends-with($urlBase, '/') or starts-with(@href, '/')">
    97 						<xsl:value-of select="concat($urlBase, @href)"/>
    98 					</xsl:when>
    99 					<xsl:otherwise>
   100 						<xsl:value-of select="concat($urlBase, '/', @href)"/>
   101 					</xsl:otherwise>
   102 				</xsl:choose>
   103 			</xsl:otherwise>
   104 		</xsl:choose>	
   105 		<xsl:text>&gt;</xsl:text>
   106 		<xsl:if test="@title and not(matches(@title, '^\s*$'))">
   107 			<xsl:text> (</xsl:text>
   108 			<xsl:value-of select="@title"/>
   109 			<xsl:text>)</xsl:text>
   110 		</xsl:if>
   111 	</xsl:template>
   112 	
   113 	<xsl:template match="h:img">
   114 		<xsl:variable name="obrázek">
   115 			<h:a href="{@src}" title="{@title}">Obrázek: <xsl:value-of select="@alt"/></h:a>
   116 		</xsl:variable>
   117 		<xsl:apply-templates select="$obrázek/node()"/>
   118 	</xsl:template>
   119 	
   120 	<xsl:template match="h:strong|h:b">
   121 		<xsl:text>**</xsl:text>
   122 		<xsl:apply-templates/>
   123 		<xsl:text>**</xsl:text>
   124 	</xsl:template>
   125 	
   126 	<xsl:template match="h:em|h:i">
   127 		<xsl:text>*</xsl:text>
   128 		<xsl:apply-templates/>
   129 		<xsl:text>*</xsl:text>
   130 	</xsl:template>
   131 	
   132 	<xsl:template match="h:abbr[@title]">
   133 		<xsl:apply-templates/>
   134 		<xsl:text> (</xsl:text>
   135 		<xsl:value-of select="@title"/>
   136 		<xsl:text>)</xsl:text>
   137 	</xsl:template>
   138 	
   139 	<xsl:template match="h:pre">
   140 		<xsl:text>--------------------------------</xsl:text>
   141 		<xsl:text>&#10;</xsl:text>
   142 		<xsl:apply-templates/>
   143 		<xsl:text>&#10;</xsl:text>
   144 		<xsl:text>--------------------------------</xsl:text>
   145 		<xsl:text>&#10;</xsl:text>
   146 		<xsl:text>&#10;</xsl:text>
   147 	</xsl:template>
   148 	
   149 	<xsl:template match="h:code">
   150 		<xsl:text>`</xsl:text>
   151 		<xsl:apply-templates/>
   152 		<xsl:text>`</xsl:text>
   153 	</xsl:template>
   154 	
   155 	<xsl:template match="h:hr">
   156 		<xsl:text>----------------------------------------------------------------</xsl:text>
   157 		<xsl:text>&#10;</xsl:text>
   158 		<xsl:text>&#10;</xsl:text>
   159 	</xsl:template>
   160 	
   161 	<xsl:template match="h:ul">
   162 		<xsl:apply-templates/>
   163 		<xsl:text>&#10;</xsl:text>
   164 	</xsl:template>
   165 	
   166 	<xsl:template match="h:ul/h:li">
   167 		<xsl:text> - </xsl:text>
   168 		<xsl:apply-templates/>
   169 		<xsl:text>&#10;</xsl:text>
   170 	</xsl:template>
   171 	
   172 	<xsl:template match="h:ol">
   173 		<xsl:for-each select="h:li">
   174 			<xsl:value-of select="concat(' ', position(), ') ')"/>
   175 			<xsl:apply-templates/>
   176 			<xsl:text>&#10;</xsl:text>
   177 		</xsl:for-each>		
   178 		<xsl:text>&#10;</xsl:text>
   179 	</xsl:template>
   180 	
   181 	
   182 	<!--
   183 	<xsl:template match="h:blockquote[matches(p/text(), '^(\"|„)')]">
   184 		
   185 	</xsl:template>
   186 	-->
   187 	
   188 	<xsl:template match="text()[not(parent::h:pre)]">
   189 		<xsl:if test="matches(., '^\s')">
   190 			<xsl:text> </xsl:text>
   191 		</xsl:if>
   192 		<xsl:value-of select="normalize-space(.)"/>
   193 		<xsl:if test="matches(., '\s$')">
   194 			<xsl:text> </xsl:text>
   195 		</xsl:if>
   196 	</xsl:template>
   197 
   198 	
   199 	<xsl:template match="h:div[@class='wwwLinks']">
   200 		<xsl:text>-- </xsl:text>
   201 		<xsl:text>&#10;</xsl:text>
   202 		<xsl:apply-templates/>	
   203 	</xsl:template>	
   204 
   205 
   206 </xsl:stylesheet>