| 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 Index - 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 |
--tr-brand-rule: #2196f3; |
| 30 |
--tr-brand-note: #1565c0; |
| 31 |
--tr-brand-note-bg: #e3f2fd; |
| 32 |
--tr-brand-badge: #28a745; |
| 33 |
--tr-brand-badge-text: #ffffff; |
| 34 |
} |
| 35 |
.sitemap-logo { |
| 36 |
display: block; |
| 37 |
margin: 0 auto 18px; |
| 38 |
max-height: 64px; |
| 39 |
max-width: 260px; |
| 40 |
width: auto; |
| 41 |
height: auto; |
| 42 |
} |
| 43 |
body { |
| 44 |
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; |
| 45 |
margin: 0; |
| 46 |
padding: 20px; |
| 47 |
background-color: #f8f9fa; |
| 48 |
color: #333; |
| 49 |
line-height: 1.6; |
| 50 |
} |
| 51 |
.header { |
| 52 |
background: linear-gradient(135deg, var(--tr-brand-main) 0%, var(--tr-brand-accent) 100%); |
| 53 |
color: var(--tr-brand-on-brand); |
| 54 |
padding: 30px; |
| 55 |
border-radius: 10px; |
| 56 |
margin-bottom: 30px; |
| 57 |
text-align: center; |
| 58 |
} |
| 59 |
.header h1 { |
| 60 |
margin: 0; |
| 61 |
font-size: 2.5em; |
| 62 |
font-weight: 300; |
| 63 |
} |
| 64 |
.header p { |
| 65 |
margin: 10px 0 0 0; |
| 66 |
opacity: 0.9; |
| 67 |
font-size: 1.1em; |
| 68 |
} |
| 69 |
.stats { |
| 70 |
display: flex; |
| 71 |
justify-content: center; |
| 72 |
gap: 30px; |
| 73 |
margin: 20px 0; |
| 74 |
flex-wrap: wrap; |
| 75 |
} |
| 76 |
.stat-item { |
| 77 |
background: rgba(255,255,255,0.2); |
| 78 |
padding: 15px 25px; |
| 79 |
border-radius: 8px; |
| 80 |
text-align: center; |
| 81 |
} |
| 82 |
.stat-number { |
| 83 |
font-size: 2em; |
| 84 |
font-weight: bold; |
| 85 |
display: block; |
| 86 |
} |
| 87 |
.stat-label { |
| 88 |
font-size: 0.9em; |
| 89 |
opacity: 0.8; |
| 90 |
} |
| 91 |
.container { |
| 92 |
max-width: 1200px; |
| 93 |
margin: 0 auto; |
| 94 |
background: white; |
| 95 |
border-radius: 10px; |
| 96 |
box-shadow: 0 4px 6px rgba(0,0,0,0.1); |
| 97 |
overflow: hidden; |
| 98 |
} |
| 99 |
.table-header { |
| 100 |
background: #f8f9fa; |
| 101 |
padding: 20px; |
| 102 |
border-bottom: 2px solid #e9ecef; |
| 103 |
} |
| 104 |
.table-header h2 { |
| 105 |
margin: 0; |
| 106 |
color: #495057; |
| 107 |
font-size: 1.5em; |
| 108 |
} |
| 109 |
.description { |
| 110 |
background: var(--tr-brand-note-bg); |
| 111 |
padding: 15px 20px; |
| 112 |
border-left: 4px solid var(--tr-brand-rule); |
| 113 |
margin: 20px; |
| 114 |
border-radius: 4px; |
| 115 |
} |
| 116 |
.description p { |
| 117 |
margin: 0; |
| 118 |
color: var(--tr-brand-note); |
| 119 |
font-size: 0.95em; |
| 120 |
} |
| 121 |
table { |
| 122 |
width: 100%; |
| 123 |
border-collapse: collapse; |
| 124 |
font-size: 14px; |
| 125 |
} |
| 126 |
th { |
| 127 |
background: var(--tr-brand-th); |
| 128 |
color: var(--tr-brand-th-text); |
| 129 |
padding: 15px 10px; |
| 130 |
text-align: left; |
| 131 |
font-weight: 600; |
| 132 |
text-transform: uppercase; |
| 133 |
font-size: 12px; |
| 134 |
letter-spacing: 0.5px; |
| 135 |
} |
| 136 |
td { |
| 137 |
padding: 12px 10px; |
| 138 |
border-bottom: 1px solid #e9ecef; |
| 139 |
vertical-align: top; |
| 140 |
} |
| 141 |
tr:hover { |
| 142 |
background-color: #f8f9fa; |
| 143 |
} |
| 144 |
.sitemap-cell { |
| 145 |
max-width: 400px; |
| 146 |
word-break: break-all; |
| 147 |
} |
| 148 |
.sitemap-cell a { |
| 149 |
color: var(--tr-brand-link); |
| 150 |
text-decoration: none; |
| 151 |
font-weight: 500; |
| 152 |
} |
| 153 |
.sitemap-cell a:hover { |
| 154 |
text-decoration: underline; |
| 155 |
color: var(--tr-brand-link-hover); |
| 156 |
} |
| 157 |
.sitemap-type { |
| 158 |
display: inline-block; |
| 159 |
background: var(--tr-brand-badge); |
| 160 |
color: var(--tr-brand-badge-text); |
| 161 |
padding: 4px 8px; |
| 162 |
border-radius: 12px; |
| 163 |
font-size: 11px; |
| 164 |
font-weight: 600; |
| 165 |
text-transform: uppercase; |
| 166 |
letter-spacing: 0.5px; |
| 167 |
} |
| 168 |
.lastmod { |
| 169 |
color: #6c757d; |
| 170 |
font-family: 'Courier New', monospace; |
| 171 |
font-size: 13px; |
| 172 |
} |
| 173 |
.footer { |
| 174 |
text-align: center; |
| 175 |
margin-top: 40px; |
| 176 |
padding: 20px; |
| 177 |
color: #6c757d; |
| 178 |
font-size: 14px; |
| 179 |
} |
| 180 |
.footer a { |
| 181 |
color: var(--tr-brand-link); |
| 182 |
text-decoration: none; |
| 183 |
} |
| 184 |
.footer a:hover { |
| 185 |
text-decoration: underline; |
| 186 |
} |
| 187 |
|
| 188 |
/* Responsive design */ |
| 189 |
@media (max-width: 768px) { |
| 190 |
body { padding: 10px; } |
| 191 |
.header { padding: 20px; } |
| 192 |
.header h1 { font-size: 2em; } |
| 193 |
.stats { gap: 15px; } |
| 194 |
.stat-item { padding: 10px 15px; } |
| 195 |
table { font-size: 12px; } |
| 196 |
th, td { padding: 8px 6px; } |
| 197 |
.sitemap-cell { max-width: 200px; } |
| 198 |
} |
| 199 |
</style> |
| 200 |
</head> |
| 201 |
<body> |
| 202 |
<div class="header"> |
| 203 |
<!-- thinkrank:logo --> |
| 204 |
<h1>XML Sitemap Index</h1> |
| 205 |
<p>Generated by ThinkRank SEO Plugin</p> |
| 206 |
<div class="stats"> |
| 207 |
<div class="stat-item"> |
| 208 |
<span class="stat-number"><xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"/></span> |
| 209 |
<span class="stat-label">Total Sitemaps</span> |
| 210 |
</div> |
| 211 |
<div class="stat-item"> |
| 212 |
<span class="stat-number">Today</span> |
| 213 |
<span class="stat-label">Generated</span> |
| 214 |
</div> |
| 215 |
</div> |
| 216 |
</div> |
| 217 |
|
| 218 |
<div class="description"> |
| 219 |
<p><strong>What is a Sitemap Index?</strong> This file contains links to all the individual sitemaps for this website. Each sitemap contains specific types of content (posts, pages, products, etc.) to help search engines crawl and index your site more efficiently.</p> |
| 220 |
</div> |
| 221 |
|
| 222 |
<div class="container"> |
| 223 |
<div class="table-header"> |
| 224 |
<h2>Individual Sitemaps</h2> |
| 225 |
</div> |
| 226 |
<table> |
| 227 |
<thead> |
| 228 |
<tr> |
| 229 |
<th>Sitemap URL</th> |
| 230 |
<th>Content Type</th> |
| 231 |
<th>Last Modified</th> |
| 232 |
</tr> |
| 233 |
</thead> |
| 234 |
<tbody> |
| 235 |
<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap"> |
| 236 |
<tr> |
| 237 |
<td class="sitemap-cell"> |
| 238 |
<a href="{sitemap:loc}" target="_blank"> |
| 239 |
<xsl:value-of select="sitemap:loc"/> |
| 240 |
</a> |
| 241 |
</td> |
| 242 |
<td> |
| 243 |
<span class="sitemap-type"> |
| 244 |
<xsl:choose> |
| 245 |
<xsl:when test="contains(sitemap:loc, 'posts')">Posts</xsl:when> |
| 246 |
<xsl:when test="contains(sitemap:loc, 'pages')">Pages</xsl:when> |
| 247 |
<xsl:when test="contains(sitemap:loc, 'categories')">Categories</xsl:when> |
| 248 |
<xsl:when test="contains(sitemap:loc, 'products')">Products</xsl:when> |
| 249 |
<xsl:when test="contains(sitemap:loc, 'product-categories')">Product Categories</xsl:when> |
| 250 |
<xsl:otherwise>Content</xsl:otherwise> |
| 251 |
</xsl:choose> |
| 252 |
</span> |
| 253 |
</td> |
| 254 |
<td class="lastmod"> |
| 255 |
<xsl:choose> |
| 256 |
<xsl:when test="sitemap:lastmod"> |
| 257 |
<xsl:value-of select="substring(sitemap:lastmod, 1, 10)"/> |
| 258 |
</xsl:when> |
| 259 |
<xsl:otherwise>-</xsl:otherwise> |
| 260 |
</xsl:choose> |
| 261 |
</td> |
| 262 |
</tr> |
| 263 |
</xsl:for-each> |
| 264 |
</tbody> |
| 265 |
</table> |
| 266 |
</div> |
| 267 |
|
| 268 |
<div class="footer"> |
| 269 |
<p>This XML sitemap index helps search engines discover and crawl all your website's content efficiently.</p> |
| 270 |
<p>Generated by <a href="https://wordpress.org/plugins/thinkrank/" target="_blank">ThinkRank SEO</a></p> |
| 271 |
</div> |
| 272 |
</body> |
| 273 |
</html> |
| 274 |
</xsl:template> |
| 275 |
</xsl:stylesheet> |
| 276 |
|