helpers/mimeTextPart.xsl
author František Kučera <franta-hg@frantovo.cz>
Mon, 17 Oct 2011 19:50:23 +0200
changeset 91 70286a6cf338
parent 90 2ed2497d4559
child 92 a865136070a0
permissions -rw-r--r--
Drupal: text/plain – podpora obrázků a dalších vnořených elementů uvnitř odkazů.
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@89
    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@90
    88
	
franta-hg@91
    89
	
franta-hg@89
    90
	<xsl:template match="h:a">
franta-hg@89
    91
		<xsl:text>"</xsl:text>
franta-hg@91
    92
		<xsl:apply-templates select="node()"/>
franta-hg@89
    93
		<xsl:text>" &lt;</xsl:text>
franta-hg@89
    94
		<xsl:choose>
franta-hg@89
    95
			<xsl:when test="matches(@href, '^(http:|https:|ftp:)')">
franta-hg@89
    96
				<xsl:value-of select="@href"/>
franta-hg@89
    97
			</xsl:when>
franta-hg@89
    98
			<xsl:when test="matches(@href, '^mailto:')">
franta-hg@89
    99
				<xsl:value-of select="substring-after(@href, 'mailto:')"/>
franta-hg@89
   100
			</xsl:when>
franta-hg@89
   101
			<xsl:otherwise>
franta-hg@89
   102
				<xsl:choose>
franta-hg@89
   103
					<xsl:when test="ends-with($urlBase, '/') or starts-with(@href, '/')">
franta-hg@89
   104
						<xsl:value-of select="concat($urlBase, @href)"/>
franta-hg@89
   105
					</xsl:when>
franta-hg@89
   106
					<xsl:otherwise>
franta-hg@89
   107
						<xsl:value-of select="concat($urlBase, '/', @href)"/>
franta-hg@89
   108
					</xsl:otherwise>
franta-hg@89
   109
				</xsl:choose>
franta-hg@89
   110
			</xsl:otherwise>
franta-hg@89
   111
		</xsl:choose>	
franta-hg@89
   112
		<xsl:text>&gt;</xsl:text>
franta-hg@89
   113
		<xsl:if test="@title and not(matches(@title, '^\s*$'))">
franta-hg@89
   114
			<xsl:text> (</xsl:text>
franta-hg@89
   115
			<xsl:value-of select="@title"/>
franta-hg@89
   116
			<xsl:text>)</xsl:text>
franta-hg@89
   117
		</xsl:if>
franta-hg@89
   118
	</xsl:template>
franta-hg@89
   119
	
franta-hg@91
   120
	
franta-hg@89
   121
	<xsl:template match="h:img">
franta-hg@89
   122
		<xsl:variable name="obrázek">
franta-hg@89
   123
			<h:a href="{@src}" title="{@title}">Obrázek: <xsl:value-of select="@alt"/></h:a>
franta-hg@89
   124
		</xsl:variable>
franta-hg@89
   125
		<xsl:apply-templates select="$obrázek/node()"/>
franta-hg@89
   126
	</xsl:template>
franta-hg@89
   127
	
franta-hg@91
   128
	
franta-hg@89
   129
	<xsl:template match="h:strong|h:b">
franta-hg@89
   130
		<xsl:text>**</xsl:text>
franta-hg@89
   131
		<xsl:apply-templates/>
franta-hg@89
   132
		<xsl:text>**</xsl:text>
franta-hg@89
   133
	</xsl:template>
franta-hg@89
   134
	
franta-hg@91
   135
	
franta-hg@89
   136
	<xsl:template match="h:em|h:i">
franta-hg@89
   137
		<xsl:text>*</xsl:text>
franta-hg@89
   138
		<xsl:apply-templates/>
franta-hg@89
   139
		<xsl:text>*</xsl:text>
franta-hg@89
   140
	</xsl:template>
franta-hg@89
   141
	
franta-hg@91
   142
	
franta-hg@89
   143
	<xsl:template match="h:abbr[@title]">
franta-hg@89
   144
		<xsl:apply-templates/>
franta-hg@89
   145
		<xsl:text> (</xsl:text>
franta-hg@89
   146
		<xsl:value-of select="@title"/>
franta-hg@89
   147
		<xsl:text>)</xsl:text>
franta-hg@89
   148
	</xsl:template>
franta-hg@89
   149
	
franta-hg@91
   150
	
franta-hg@89
   151
	<xsl:template match="h:pre">
franta-hg@89
   152
		<xsl:text>--------------------------------</xsl:text>
franta-hg@89
   153
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   154
		<xsl:apply-templates/>
franta-hg@89
   155
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   156
		<xsl:text>--------------------------------</xsl:text>
franta-hg@89
   157
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   158
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   159
	</xsl:template>
franta-hg@89
   160
	
franta-hg@91
   161
	
franta-hg@89
   162
	<xsl:template match="h:code">
franta-hg@89
   163
		<xsl:text>`</xsl:text>
franta-hg@89
   164
		<xsl:apply-templates/>
franta-hg@89
   165
		<xsl:text>`</xsl:text>
franta-hg@89
   166
	</xsl:template>
franta-hg@89
   167
	
franta-hg@91
   168
	
franta-hg@89
   169
	<xsl:template match="h:hr">
franta-hg@89
   170
		<xsl:text>----------------------------------------------------------------</xsl:text>
franta-hg@89
   171
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   172
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   173
	</xsl:template>
franta-hg@89
   174
	
franta-hg@91
   175
	
franta-hg@89
   176
	<xsl:template match="h:ul">
franta-hg@89
   177
		<xsl:apply-templates/>
franta-hg@89
   178
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   179
	</xsl:template>
franta-hg@89
   180
	
franta-hg@91
   181
	
franta-hg@89
   182
	<xsl:template match="h:ul/h:li">
franta-hg@89
   183
		<xsl:text> - </xsl:text>
franta-hg@89
   184
		<xsl:apply-templates/>
franta-hg@89
   185
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   186
	</xsl:template>
franta-hg@89
   187
	
franta-hg@91
   188
	
franta-hg@89
   189
	<xsl:template match="h:ol">
franta-hg@89
   190
		<xsl:for-each select="h:li">
franta-hg@89
   191
			<xsl:value-of select="concat(' ', position(), ') ')"/>
franta-hg@89
   192
			<xsl:apply-templates/>
franta-hg@89
   193
			<xsl:text>&#10;</xsl:text>
franta-hg@89
   194
		</xsl:for-each>		
franta-hg@89
   195
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   196
	</xsl:template>
franta-hg@89
   197
	
franta-hg@89
   198
	
franta-hg@89
   199
	<xsl:template match="text()[not(parent::h:pre)]">
franta-hg@89
   200
		<xsl:if test="matches(., '^\s')">
franta-hg@89
   201
			<xsl:text> </xsl:text>
franta-hg@89
   202
		</xsl:if>
franta-hg@89
   203
		<xsl:value-of select="normalize-space(.)"/>
franta-hg@89
   204
		<xsl:if test="matches(., '\s$')">
franta-hg@89
   205
			<xsl:text> </xsl:text>
franta-hg@89
   206
		</xsl:if>
franta-hg@89
   207
	</xsl:template>
franta-hg@89
   208
franta-hg@89
   209
	
franta-hg@89
   210
	<xsl:template match="h:div[@class='wwwLinks']">
franta-hg@91
   211
		<!-- 
franta-hg@91
   212
			Dvě pomlčky a mezeru budou e-maliloví klienti považovat za začátek podpisu
franta-hg@91
   213
			a zobrazí ho šedivým písmem a nebudou ho citovat v odpovědích.
franta-hg@91
   214
		-->
franta-hg@89
   215
		<xsl:text>-- </xsl:text>
franta-hg@89
   216
		<xsl:text>&#10;</xsl:text>
franta-hg@89
   217
		<xsl:apply-templates/>	
franta-hg@89
   218
	</xsl:template>	
franta-hg@89
   219
franta-hg@89
   220
franta-hg@89
   221
</xsl:stylesheet>