PluginProbe
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO / 2.9.0
ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO v2.9.0
2.9.0 2.8.0 2.7.0 2.6.0 2.5.0 2.4.0 2.3.0 2.2.0 2.1.1 2.1.0 2.0.2 2.0.1 2.0.0 1.32.0 1.31.0 1.30.0 1.29.0 1.28.0 1.27.0 1.26.0 1.25.0 trunk 1.0.0 1.0.1 1.0.2 All 50 releases
thinkrank / static / xsl / sitemap.xsl

sitemap.xsl in ThinkRank AI SEO – AI SEO Plugin for WordPress: Schema, XML Sitemaps, Meta Tags, Search Console & Local SEO 2.9.0, at static/xsl/sitemap.xsl

254 lines 11.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9">
3 <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
4
5 <xsl:template match="/">
6 <html xmlns="http://www.w3.org/1999/xhtml">
7 <head>
8 <title>XML Sitemap - ThinkRank SEO</title>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
10 <style type="text/css">
11 /*
12 * Brand palette.
13 *
14 * Every value here is the stock one, so this stylesheet is
15 * complete on its own: opened directly it renders exactly
16 * as it always has. Sitemap_Stylesheet overrides these
17 * declarations when the site has set a brand colour, which
18 * is why each brandable colour is a custom property and
19 * nothing below repeats a literal.
20 */
21 :root {
22 --tr-brand-main: #667eea;
23 --tr-brand-accent: #764ba2;
24 --tr-brand-on-brand: #ffffff;
25 --tr-brand-link: #007bff;
26 --tr-brand-link-hover: #0056b3;
27 --tr-brand-th: #6c757d;
28 --tr-brand-th-text: #ffffff;
29 }
30 .sitemap-logo {
31 display: block;
32 margin: 0 auto 18px;
33 max-height: 64px;
34 max-width: 260px;
35 width: auto;
36 height: auto;
37 }
38 body {
39 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
40 margin: 0;
41 padding: 20px;
42 background-color: #f8f9fa;
43 color: #333;
44 line-height: 1.6;
45 }
46 .header {
47 background: linear-gradient(135deg, var(--tr-brand-main) 0%, var(--tr-brand-accent) 100%);
48 color: var(--tr-brand-on-brand);
49 padding: 30px;
50 border-radius: 10px;
51 margin-bottom: 30px;
52 text-align: center;
53 }
54 .header h1 {
55 margin: 0;
56 font-size: 2.5em;
57 font-weight: 300;
58 }
59 .header p {
60 margin: 10px 0 0 0;
61 opacity: 0.9;
62 font-size: 1.1em;
63 }
64 .stats {
65 display: flex;
66 justify-content: center;
67 gap: 30px;
68 margin: 20px 0;
69 flex-wrap: wrap;
70 }
71 .stat-item {
72 background: rgba(255,255,255,0.2);
73 padding: 15px 25px;
74 border-radius: 8px;
75 text-align: center;
76 }
77 .stat-number {
78 font-size: 2em;
79 font-weight: bold;
80 display: block;
81 }
82 .stat-label {
83 font-size: 0.9em;
84 opacity: 0.8;
85 }
86 .container {
87 max-width: 1200px;
88 margin: 0 auto;
89 background: white;
90 border-radius: 10px;
91 box-shadow: 0 4px 6px rgba(0,0,0,0.1);
92 overflow: hidden;
93 }
94 .table-header {
95 background: #f8f9fa;
96 padding: 20px;
97 border-bottom: 2px solid #e9ecef;
98 }
99 .table-header h2 {
100 margin: 0;
101 color: #495057;
102 font-size: 1.5em;
103 }
104 table {
105 width: 100%;
106 border-collapse: collapse;
107 font-size: 14px;
108 }
109 th {
110 background: var(--tr-brand-th);
111 color: var(--tr-brand-th-text);
112 padding: 15px 10px;
113 text-align: left;
114 font-weight: 600;
115 text-transform: uppercase;
116 font-size: 12px;
117 letter-spacing: 0.5px;
118 }
119 td {
120 padding: 12px 10px;
121 border-bottom: 1px solid #e9ecef;
122 vertical-align: top;
123 }
124 tr:hover {
125 background-color: #f8f9fa;
126 }
127 .url-cell {
128 max-width: 400px;
129 word-break: break-all;
130 }
131 .url-cell a {
132 color: var(--tr-brand-link);
133 text-decoration: none;
134 font-weight: 500;
135 }
136 .url-cell a:hover {
137 text-decoration: underline;
138 color: var(--tr-brand-link-hover);
139 }
140 .priority-high { color: #28a745; font-weight: bold; }
141 .priority-medium { color: #ffc107; font-weight: bold; }
142 .priority-low { color: #6c757d; }
143 .changefreq {
144 background: #e9ecef;
145 padding: 4px 8px;
146 border-radius: 4px;
147 font-size: 12px;
148 text-transform: uppercase;
149 font-weight: 600;
150 }
151 .lastmod {
152 font-family: 'Courier New', monospace;
153 font-size: 12px;
154 color: #6c757d;
155 }
156 .footer {
157 text-align: center;
158 padding: 30px;
159 color: #6c757d;
160 background: #f8f9fa;
161 margin-top: 30px;
162 border-radius: 10px;
163 }
164 .footer a {
165 color: var(--tr-brand-link);
166 text-decoration: none;
167 }
168 .footer a:hover {
169 text-decoration: underline;
170 }
171 @media (max-width: 768px) {
172 body { padding: 10px; }
173 .header { padding: 20px; }
174 .header h1 { font-size: 2em; }
175 .stats { gap: 15px; }
176 .stat-item { padding: 10px 15px; }
177 table { font-size: 12px; }
178 th, td { padding: 8px 6px; }
179 .url-cell { max-width: 200px; }
180 }
181 </style>
182 </head>
183 <body>
184 <div class="header">
185 <!-- thinkrank:logo -->
186 <h1>XML Sitemap</h1>
187 <p>Generated by ThinkRank SEO Plugin</p>
188 <div class="stats">
189 <div class="stat-item">
190 <span class="stat-number"><xsl:value-of select="count(sitemap:urlset/sitemap:url)"/></span>
191 <span class="stat-label">Total URLs</span>
192 </div>
193 <div class="stat-item">
194 <span class="stat-number">Today</span>
195 <span class="stat-label">Generated</span>
196 </div>
197 </div>
198 </div>
199
200 <div class="container">
201 <div class="table-header">
202 <h2>Sitemap URLs</h2>
203 </div>
204 <table>
205 <thead>
206 <tr>
207 <th>URL</th>
208 <th>Last Modified</th>
209 <th>Priority</th>
210 <th>Change Frequency</th>
211 </tr>
212 </thead>
213 <tbody>
214 <xsl:for-each select="sitemap:urlset/sitemap:url">
215 <xsl:sort select="sitemap:priority" order="descending"/>
216 <tr>
217 <td class="url-cell">
218 <a href="{sitemap:loc}" target="_blank">
219 <xsl:value-of select="sitemap:loc"/>
220 </a>
221 </td>
222 <td class="lastmod">
223 <xsl:value-of select="substring(sitemap:lastmod, 1, 10)"/>
224 </td>
225 <td>
226 <xsl:attribute name="class">
227 <xsl:choose>
228 <xsl:when test="sitemap:priority &gt;= 0.8">priority-high</xsl:when>
229 <xsl:when test="sitemap:priority &gt;= 0.5">priority-medium</xsl:when>
230 <xsl:otherwise>priority-low</xsl:otherwise>
231 </xsl:choose>
232 </xsl:attribute>
233 <xsl:value-of select="sitemap:priority"/>
234 </td>
235 <td>
236 <span class="changefreq">
237 <xsl:value-of select="sitemap:changefreq"/>
238 </span>
239 </td>
240 </tr>
241 </xsl:for-each>
242 </tbody>
243 </table>
244 </div>
245
246 <div class="footer">
247 <p>This XML sitemap is used by search engines to better understand your website structure.</p>
248 <p>Generated by <a href="https://wordpress.org/plugins/thinkrank/" target="_blank">ThinkRank SEO</a></p>
249 </div>
250 </body>
251 </html>
252 </xsl:template>
253 </xsl:stylesheet>
254