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