1
+ <?xml version =" 1.0" encoding =" utf-8" ?>
2
+ <xsl : stylesheet version =" 2.0" xmlns : xsl =" http://www.w3.org/1999/XSL/Transform" xmlns : itunes =" http://www.itunes.com/dtds/podcast-1.0.dtd" >
3
+ <xsl : output method =" html" version =" 1.0" encoding =" UTF-8" indent =" yes" />
4
+ <xsl : template match =" /" >
5
+ <html xmlns =" http://www.w3.org/1999/xhtml" >
6
+ <head >
7
+ <title >
8
+ <xsl : value-of select =" /rss/channel/title" /> RSS Feed
9
+ </title >
10
+ <meta http-equiv =" Content-Type" content =" text/html; charset=utf-8" />
11
+ <style type =" text/css" >
12
+ body {
13
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
14
+ font-size: 14px;
15
+ color: #666666;
16
+ line-height: 20px
17
+ padding: 15px;
18
+ }
19
+ a, a:link, a:visited {
20
+ color: #92C13C;
21
+ color: #0000EE;
22
+ text-decoration: none;
23
+ text-decoration: underline;
24
+ }
25
+ a:hover {
26
+ color: #578600;
27
+ color: #0000EE;
28
+ text-decoration: none;
29
+ }
30
+ .alert {
31
+ color: #999999;
32
+ font-size: 11px;
33
+ margin-bottom: 20px;
34
+ text-align: center;
35
+ }
36
+ .container {
37
+ max-width: 850px;
38
+ margin: 0 auto;
39
+ background: #fff;
40
+ border-radius: 4px;
41
+ padding: 15px;
42
+ }
43
+ .podcast-container {
44
+ background: #FAFAFA;
45
+ border: 1px solid #EAEAEA;
46
+ border-radius: 5px;
47
+ display: flex;
48
+ padding: 15px;
49
+ }
50
+ .podcast-image {
51
+ margin-right: 30px;
52
+ width: 150px;
53
+ }
54
+ .podcast-image img {
55
+ width: 150px;
56
+ height: auto;
57
+ border-radius: 5px;
58
+ }
59
+ .podcast-title {
60
+ color: #222222;
61
+ font-size: 25px;
62
+ line-height: 30px;
63
+ margin: 10px 0 0 0;
64
+ }
65
+ .podcast-description {
66
+ line-height: 19px;
67
+ margin-top: 10px;
68
+ }
69
+ .item {
70
+ clear: both;
71
+ border-bottom: 1px solid #EAEAEA;
72
+ padding: 30px 0;
73
+ }
74
+ .episode-title {
75
+ color: #222222;
76
+ font-size: 20px;
77
+ line-height: 25px;
78
+ margin: 0 0 5px 0;
79
+ }
80
+ .episode-meta {
81
+ font-size: 11px;
82
+ color: #999999;
83
+ margin-bottom: 15px;
84
+ text-transform: uppercase;
85
+ }
86
+ .episode-description {
87
+ line-height: 19px;
88
+ margin-bottom: 30px;
89
+ }
90
+ .episode-image img {
91
+ width: 100px;
92
+ height: auto;
93
+ margin: 0 30px 15px 0;
94
+ border-radius: 5px;
95
+ }
96
+ audio {
97
+ width: 100%;
98
+ border-radius: 5px;
99
+ }
100
+ audio:focus {
101
+ outline: none;
102
+ }
103
+ </style >
104
+ </head >
105
+ <body >
106
+ <div class =" container" >
107
+ <div class =" alert" >
108
+ To subscribe to this podcast, copy and paste the URL from the address bar into the podcast app of your choice.
109
+ </div >
110
+ <div class =" podcast-container" >
111
+ <xsl : if test =" /rss/channel/image" >
112
+ <div class =" podcast-image" >
113
+ <a >
114
+ <xsl : attribute name =" href" >
115
+ <xsl : value-of select =" /rss/channel/image/link" />
116
+ </xsl : attribute >
117
+ <img >
118
+ <xsl : attribute name =" src" >
119
+ <xsl : value-of select =" /rss/channel/image/url" />
120
+ </xsl : attribute >
121
+ <xsl : attribute name =" title" >
122
+ <xsl : value-of select =" /rss/channel/image/title" />
123
+ </xsl : attribute >
124
+ </img >
125
+ </a >
126
+ </div >
127
+ </xsl : if >
128
+ <div >
129
+ <h1 class =" podcast-title" >
130
+ <xsl : value-of select =" /rss/channel/title" />
131
+ </h1 >
132
+ <div class =" podcast-description" >
133
+ <xsl : value-of select =" /rss/channel/description" disable-output-escaping =" yes" />
134
+ </div >
135
+ </div >
136
+ </div >
137
+ <xsl : for-each select =" /rss/channel/item" >
138
+ <div class =" item" >
139
+ <h2 class =" episode-title" >
140
+ <xsl : value-of select =" title" />
141
+ </h2 >
142
+ <div class =" episode-meta" >
143
+ <span >
144
+ <xsl : value-of select =" pubDate" />
145
+ </span > ◦
146
+ <span >
147
+ <xsl : value-of select =" format-number(floor(itunes:duration div 60), '0')" /> minutes
148
+ </span >
149
+ </div >
150
+ <xsl : if test =" description" >
151
+ <div class =" episode-description" >
152
+ <xsl : value-of select =" description" disable-output-escaping =" yes" />
153
+ </div >
154
+ </xsl : if >
155
+ <audio controls =" true" preload =" none" >
156
+ <xsl : attribute name =" src" >
157
+ <xsl : value-of select =" enclosure/@url" />
158
+ </xsl : attribute >
159
+ </audio >
160
+ </div >
161
+ </xsl : for-each >
162
+ </div >
163
+ </body >
164
+ </html >
165
+ </xsl : template >
166
+ </xsl : stylesheet >
0 commit comments