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="*"/>
9 <xsl:output method="text" encoding="UTF-8"/>
10 <xsl:strip-space elements="*"/>
12 <xsl:variable name="urlBase" select="/h:html/h:head/h:base/@href"/>
14 <!-- Celý dokument -->
15 <xsl:template match="/">
16 <xsl:apply-templates select="h:html/h:body"/>
19 <xsl:template match="h:h1">
20 <xsl:value-of select="text()"/>
21 <xsl:text> </xsl:text>
22 <xsl:for-each select="1 to string-length(.)">#</xsl:for-each>
23 <xsl:text> </xsl:text>
24 <xsl:text> </xsl:text>
27 <xsl:template match="h:h2">
28 <xsl:value-of select="text()"/>
29 <xsl:text> </xsl:text>
30 <xsl:for-each select="1 to string-length(.)">-</xsl:for-each>
31 <xsl:text> </xsl:text>
32 <xsl:text> </xsl:text>
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> </xsl:text>
40 <xsl:text> </xsl:text>
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> </xsl:text>
49 <xsl:text> </xsl:text>
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> </xsl:text>
58 <xsl:text> </xsl:text>
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> </xsl:text>
66 <xsl:text> </xsl:text>
70 <xsl:template match="h:p">
71 <xsl:apply-templates/>
72 <xsl:text> </xsl:text>
73 <xsl:text> </xsl:text>
76 <xsl:template match="h:blockquote/h:p">
77 <xsl:text>> </xsl:text>
78 <xsl:apply-templates/>
79 <xsl:text> </xsl:text>
80 <xsl:text> </xsl:text>
83 <xsl:template match="h:a">
84 <xsl:text>"</xsl:text>
85 <xsl:value-of select="text()"/>
86 <xsl:text>" <</xsl:text>
88 <xsl:when test="matches(@href, '^(http:|https:|ftp:)')">
89 <xsl:value-of select="@href"/>
91 <xsl:when test="matches(@href, '^mailto:')">
92 <xsl:value-of select="substring-after(@href, 'mailto:')"/>
96 <xsl:when test="ends-with($urlBase, '/') or starts-with(@href, '/')">
97 <xsl:value-of select="concat($urlBase, @href)"/>
100 <xsl:value-of select="concat($urlBase, '/', @href)"/>
105 <xsl:text>></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>
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>
117 <xsl:apply-templates select="$obrázek/node()"/>
120 <xsl:template match="h:strong|h:b">
121 <xsl:text>**</xsl:text>
122 <xsl:apply-templates/>
123 <xsl:text>**</xsl:text>
126 <xsl:template match="h:em|h:i">
127 <xsl:text>*</xsl:text>
128 <xsl:apply-templates/>
129 <xsl:text>*</xsl:text>
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>
139 <xsl:template match="h:pre">
140 <xsl:text>--------------------------------</xsl:text>
141 <xsl:text> </xsl:text>
142 <xsl:apply-templates/>
143 <xsl:text> </xsl:text>
144 <xsl:text>--------------------------------</xsl:text>
145 <xsl:text> </xsl:text>
146 <xsl:text> </xsl:text>
149 <xsl:template match="h:code">
150 <xsl:text>`</xsl:text>
151 <xsl:apply-templates/>
152 <xsl:text>`</xsl:text>
155 <xsl:template match="h:hr">
156 <xsl:text>----------------------------------------------------------------</xsl:text>
157 <xsl:text> </xsl:text>
158 <xsl:text> </xsl:text>
161 <xsl:template match="h:ul">
162 <xsl:apply-templates/>
163 <xsl:text> </xsl:text>
166 <xsl:template match="h:ul/h:li">
167 <xsl:text> - </xsl:text>
168 <xsl:apply-templates/>
169 <xsl:text> </xsl:text>
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> </xsl:text>
178 <xsl:text> </xsl:text>
183 <xsl:template match="h:blockquote[matches(p/text(), '^(\"|„)')]">
188 <xsl:template match="text()[not(parent::h:pre)]">
189 <xsl:if test="matches(., '^\s')">
190 <xsl:text> </xsl:text>
192 <xsl:value-of select="normalize-space(.)"/>
193 <xsl:if test="matches(., '\s$')">
194 <xsl:text> </xsl:text>
199 <xsl:template match="h:div[@class='wwwLinks']">
200 <xsl:text>-- </xsl:text>
201 <xsl:text> </xsl:text>
202 <xsl:apply-templates/>