207 lines
5.7 KiB
XML
207 lines
5.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<xsl:stylesheet version="2.0"
|
|
xmlns:html="http://www.w3.org/TR/REC-html40"
|
|
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
|
|
<xsl:template match="/">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>XML Sitemap</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0;" />
|
|
<style>
|
|
:root {
|
|
--bg-color: #f8f8f8;
|
|
--bg-color-secondary: #fff;
|
|
--text-color: #2c3e50;
|
|
--border-color: #eaecef;
|
|
--brand-color: #3eaf7c;
|
|
|
|
color-scheme: light dark;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--bg-color: #0d1117;
|
|
--bg-color-secondary: #161b22;
|
|
--text-color: #ccc;
|
|
--border-color: #30363d;
|
|
}
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
background: var(--bg-color);
|
|
}
|
|
|
|
html {
|
|
font-size: 14px;
|
|
}
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
color: var(--text-color);
|
|
text-align: center;
|
|
}
|
|
|
|
#content {
|
|
max-width: 960px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
h1 {
|
|
margin-top: 1rem;
|
|
font-size: 2rem;
|
|
}
|
|
|
|
@media (max-width: 419px) {
|
|
h1 {
|
|
font-size: 1.5rem;
|
|
}
|
|
}
|
|
|
|
a {
|
|
color: var(--text-color);
|
|
font-weight: 500;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
border-radius: 8px;
|
|
border-collapse: collapse;
|
|
text-align: center;
|
|
overflow: hidden;
|
|
}
|
|
|
|
@media (max-width: 419px) {
|
|
table {
|
|
border-radius: 0;
|
|
}
|
|
}
|
|
|
|
th {
|
|
min-width: 56px;
|
|
padding: 0.6em 1em;
|
|
|
|
background-color: var(--brand-color);
|
|
color: var(--bg-color);
|
|
|
|
font-weight: bold;
|
|
font-size: 16px;
|
|
}
|
|
|
|
@media (max-width: 719px) {
|
|
th {
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
|
|
th:first-child {
|
|
text-align: start;
|
|
}
|
|
|
|
tr:nth-child(odd) {
|
|
background: var(--bg-color-secondary);
|
|
}
|
|
|
|
tr:hover {
|
|
background-color: #e8e8e8;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
tr:hover {
|
|
background-color: #333;
|
|
}
|
|
}
|
|
|
|
td {
|
|
padding: 0.6em 1em;
|
|
}
|
|
|
|
@media (max-width: 719px) {
|
|
td {
|
|
font-size: 12px;
|
|
}
|
|
}
|
|
|
|
td:first-child {
|
|
text-align: start;
|
|
}
|
|
|
|
footer {
|
|
margin-top: 10px;
|
|
padding: 4px;
|
|
|
|
color: #888;
|
|
|
|
font-size: 12px;
|
|
text-align: center;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="content">
|
|
<h1>Sitemap</h1>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
<xsl:value-of select="concat('URL (', count(sitemap:urlset/sitemap:url), ')')" />
|
|
</th>
|
|
<th>Priority</th>
|
|
<th>Change Frequency</th>
|
|
<th>Last Updated Time</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
|
|
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
|
|
<xsl:for-each select="sitemap:urlset/sitemap:url">
|
|
<tr>
|
|
<td>
|
|
<xsl:variable name="itemURL">
|
|
<xsl:value-of select="sitemap:loc" />
|
|
</xsl:variable>
|
|
<a href="{$itemURL}" target="_blank">
|
|
<xsl:value-of select="sitemap:loc" />
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<xsl:choose>
|
|
<xsl:when test="sitemap:priority">
|
|
<xsl:value-of select="concat(sitemap:priority*100,'%a')" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text>0.5</xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</td>
|
|
<td>
|
|
<xsl:choose>
|
|
<xsl:when test="sitemap:changefreq">
|
|
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text>-</xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</td>
|
|
<td>
|
|
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))" />
|
|
</td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<footer>
|
|
Generatd by <a href="https://ecosystem.vuejs.press/plugins/sitemap/">@vuepress/plugin-sitemap</a>
|
|
</footer>
|
|
</body>
|
|
</html>
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|