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