123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Google Sitemaps Stylesheets (GSStylesheets)
- Project Home: http://sourceforge.net/projects/gstoolbox
- Copyright (c) 2005 Baccou Bonneville SARL (http://www.baccoubonneville.com)
- License http://www.gnu.org/copyleft/lesser.html GNU/LGPL
-
- Created by Serge Baccou
- 1.0 / 20 Aug 2005
-
- Changes by Johannes Müller ( http://GSiteCrawler.com/ )
- 1.1 / 20 Aug 2005 - sorting by clicking on column headers
- - open urls in new window/tab
- - some stylesheet/CSS cleanup
-
- Changes by Tobias Kluge ( http://enarion.net/ )
- 1.2 / 22 Aug 2005 - moved sitemap file and sitemap index file into one file gss.xsl
- 1.5 / 27 Aug 2005 - added js and css into xslt stylesheet; only gss.xsl is needed now
-
- Changes by Serge Baccou
- 1.3 / 23 Aug 2005 - some XSLT cleanup
- 1.4 / 24 Aug 2005 - sourceForge and LGPL links and logos
- - sorting is working for siteindex (see gss.js)
- Johannes Müller ( http://gsitecrawler.com/ )
- 1.5a/ 31 Aug 2005 - added version number in footer
- - removed images (don't allow tracking on other servers)
- 1.5b/ 05 Jul 2006 - removed (unnecessary) link to (missing) CSS file
- - moved necessary items from Googles CSS file intern
- - javascript code not compatible with Opera 9.0
- 1.6/ 19 Nov 2006 - Changed namespace to http://www.sitemaps.org/schemas/sitemap/0.9
- -->
- <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="iso-8859-1" indent="yes"/>
-
- <!-- Root template -->
- <xsl:template match="/">
- <html>
- <head>
- <title>Google Sitemap File for </title>
- <style type="text/css">
- <![CDATA[
- <!--
- body {
- font-family: arial, sans-serif;
- font-size: 0.8em;
- height:100%;
- }
- body * {
- font-size: 100%;
- }
- h1 {
- font-weight:bold;
- font-size:1.5em;
- margin-bottom:0;
- margin-top:1px; }
-
- h2 {
- font-weight:bold;
- font-size:1.2em;
- margin-bottom:0;
- color:#707070;
- margin-top:1px; }
- h3 {
- font-weight:bold;
- font-size:1.2em;
- margin-bottom:0;
- color:#000;
- margin-top:1px; }
-
- td, th {
- font-family: arial, sans-serif;
- font-size: 0.9em;
- }
-
- .header {
- font-weight: bold;
- font-size: 1.1em;
- }
-
- p.sml {
- font-size:0.8em;
- margin-top:0;
- }
-
- .data {
- border-collapse:collapse;
- border:1px solid #b0b0b0;
- margin-top:3px;
- width:100%;
- padding:5em;
- }
- .data td {
- border-bottom:1px solid #b0b0b0;
- text-align:left;
- padding:3px;
- }
-
- .sortup {
- background-position: right center;
- background-image: url(http://www.google.com/webmasters/sitemaps/images/sortup.gif);
- background-repeat: no-repeat;
- font-style:italic;
- white-space:pre; }
-
- .sortdown {
- background-position: right center;
- background-image: url(http://www.google.com/webmasters/sitemaps/images/sortdown.gif);
- background-repeat: no-repeat;
- font-style:italic;
- white-space:pre; }
-
- table.copyright {
- width:100%;
- border-top:1px solid #ddad08;
- margin-top:1em;
- text-align:center;
- padding-top:1em;
- vertical-align:top; }
-
- .copyright {
- color: #6F6F6F;
- font-size: 0.8em;
- }
- -->
- ]]>
- </style>
- <script language="JavaScript">
- <![CDATA[
- var selectedColor = "blue";
- var defaultColor = "black";
- var hdrRows = 1;
- var numeric = '..';
- var desc = '..';
- var html = '..';
- var freq = '..';
-
- function initXsl(tabName,fileType) {
- hdrRows = 1;
-
- if(fileType=="sitemap") {
- numeric = ".3.";
- desc = ".1.";
- html = ".0.";
- freq = ".2.";
- initTable(tabName);
- setSort(tabName, 3, 1);
- }
- else {
- desc = ".1.";
- html = ".0.";
- initTable(tabName);
- setSort(tabName, 1, 1);
- }
-
- var theURL = document.getElementById("head1");
- theURL.innerHTML += ' ' + location;
- document.title += ': ' + location;
- }
-
- function initTable(tabName) {
- var theTab = document.getElementById(tabName);
- for(r=0;r<hdrRows;r++)
- for(c=0;c<theTab.rows[r].cells.length;c++)
- if((r+theTab.rows[r].cells[c].rowSpan)>hdrRows)
- hdrRows=r+theTab.rows[r].cells[c].rowSpan;
- for(r=0;r<hdrRows; r++){
- colNum = 0;
- for(c=0;c<theTab.rows[r].cells.length;c++, colNum++){
- if(theTab.rows[r].cells[c].colSpan<2){
- theCell = theTab.rows[r].cells[c];
- rTitle = theCell.innerHTML.replace(/<[^>]+>| /g,'');
- if(rTitle>""){
- theCell.title = "Change sort order for " + rTitle;
- theCell.onmouseover = function(){setCursor(this, "selected")};
- theCell.onmouseout = function(){setCursor(this, "default")};
- var sortParams = 15; // bitmapped: numeric|desc|html|freq
- if(numeric.indexOf("."+colNum+".")>-1) sortParams -= 1;
- if(desc.indexOf("."+colNum+".")>-1) sortParams -= 2;
- if(html.indexOf("."+colNum+".")>-1) sortParams -= 4;
- if(freq.indexOf("."+colNum+".")>-1) sortParams -= 8;
- theCell.onclick = new Function("sortTable(this,"+(colNum+r)+","+hdrRows+","+sortParams+")");
- }
- } else {
- colNum = colNum+theTab.rows[r].cells[c].colSpan-1;
- }
- }
- }
- }
-
- function setSort(tabName, colNum, sortDir) {
- var theTab = document.getElementById(tabName);
- theTab.rows[0].sCol = colNum;
- theTab.rows[0].sDir = sortDir;
- if (sortDir)
- theTab.rows[0].cells[colNum].className='sortdown'
- else
- theTab.rows[0].cells[colNum].className='sortup';
- }
-
- function setCursor(theCell, mode){
- rTitle = theCell.innerHTML.replace(/<[^>]+>| |\W/g,'');
- if(mode=="selected"){
- if(theCell.style.color!=selectedColor)
- defaultColor = theCell.style.color;
- theCell.style.color = selectedColor;
- theCell.style.cursor = "hand";
- window.status = "Click to sort by '"+rTitle+"'";
- } else {
- theCell.style.color = defaultColor;
- theCell.style.cursor = "";
- window.status = "";
- }
- }
-
- function sortTable(theCell, colNum, hdrRows, sortParams){
- var typnum = !(sortParams & 1);
- sDir = !(sortParams & 2);
- var typhtml = !(sortParams & 4);
- var typfreq = !(sortParams & 8);
- var tBody = theCell.parentNode;
- while((tBody.nodeName!="TBODY") && (tBody.nodeName!="TABLE")) {
- tBody = tBody.parentNode;
- }
- var tabOrd = new Array();
- if(tBody.rows[0].sCol==colNum) sDir = !tBody.rows[0].sDir;
- if (tBody.rows[0].sCol>=0)
- tBody.rows[0].cells[tBody.rows[0].sCol].className='';
- tBody.rows[0].sCol = colNum;
- tBody.rows[0].sDir = sDir;
- if (sDir)
- tBody.rows[0].cells[colNum].className='sortdown'
- else
- tBody.rows[0].cells[colNum].className='sortup';
- for(i=0,r=hdrRows;r<tBody.rows.length;i++,r++){
- colCont = tBody.rows[r].cells[colNum].innerHTML;
- if(typhtml) colCont = colCont.replace(/<[^>]+>/g,'');
- if(typnum) {
- colCont*=1;
- if(isNaN(colCont)) colCont = 0;
- }
- if(typfreq) {
- switch(colCont.toLowerCase()) {
- case "always": { colCont=0; break; }
- case "hourly": { colCont=1; break; }
- case "daily": { colCont=2; break; }
- case "weekly": { colCont=3; break; }
- case "monthly": { colCont=4; break; }
- case "yearly": { colCont=5; break; }
- case "never": { colCont=6; break; }
- }
- }
- tabOrd[i] = [r, tBody.rows[r], colCont];
- }
- tabOrd.sort(compRows);
- for(i=0,r=hdrRows;r<tBody.rows.length;i++,r++){
- tBody.insertBefore(tabOrd[i][1],tBody.rows[r]);
- }
- window.status = "";
- }
-
- function compRows(a, b){
- if(sDir){
- if(a[2]>b[2]) return -1;
- if(a[2]<b[2]) return 1;
- } else {
- if(a[2]>b[2]) return 1;
- if(a[2]<b[2]) return -1;
- }
- return 0;
- }
- ]]>
- </script>
-
- </head>
- <!-- Store in $fileType if we are in a sitemap or in a siteindex -->
- <xsl:variable name="fileType">
- <xsl:choose>
- <xsl:when test="//sitemap:url">sitemap</xsl:when>
- <xsl:otherwise>siteindex</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Body -->
- <body onLoad="initXsl('table0','{$fileType}');">
-
- <!-- Text and table -->
- <h1 id="head1">Google Sitemap</h1>
- <xsl:choose>
- <xsl:when test="$fileType='sitemap'"><xsl:call-template name="sitemapTable"/></xsl:when>
- <xsl:otherwise><xsl:call-template name="siteindexTable"/></xsl:otherwise>
- </xsl:choose>
-
- <!-- Copyright notice -->
- <br/>
- <table class="copyright" id="table_copyright">
- <tr>
- <td>
- <p>Google Sitemaps: (c) 2005-2007 <a href="http://www.google.com">Google</a> - <a href="https://www.google.com/webmasters/sitemaps/stats">My Sitemaps</a> - <a href="http://www.google.com/webmasters/sitemaps/docs/en/about.html">About</a> - <a href="http://www.google.com/webmasters/sitemaps/docs/en/faq.html">FAQ</a> - <a href="http://groups-beta.google.com/group/google-sitemaps">Discussion</a> - <a href="http://sitemaps.blogspot.com/">Blog</a></p>
- Google Sitemaps Stylesheets v1.6: (c) 2005-2007 <a href="http://www.baccoubonneville.com">Baccou Bonneville</a> - <a href="http://sourceforge.net/projects/gstoolbox">Project</a> - <a href="http://www.baccoubonneville.com/blogs/index.php/webdesign/2005/08/20/google-sitemaps-stylesheets">Blog</a><br/>
- Johannes Mueller, SOFTplus <a href="http://gsitecrawler.com">GSiteCrawler</a> - Tobias Kluge, enarion.net <a href="http://enarion.net/google/phpsitemapng">phpSitemapNG</a>
- </td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:template>
- <!-- siteindexTable template -->
- <xsl:template name="siteindexTable">
- <h2>Number of sitemaps in this Google sitemap index: <xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"></xsl:value-of></h2>
- <p class="sml">Click on the table headers to change sorting.</p>
- <table border="1" width="100%" class="data" id="table1">
- <tr class="header">
- <td>Sitemap URL</td>
- <td>Last modification date</td>
- </tr>
- <xsl:apply-templates select="sitemap:sitemapindex/sitemap:sitemap">
- <xsl:sort select="sitemap:lastmod" order="descending"/>
- </xsl:apply-templates>
- </table>
- </xsl:template>
-
- <!-- sitemapTable template -->
- <xsl:template name="sitemapTable">
- <h2>Number of URLs in this Google Sitemap: <xsl:value-of select="count(sitemap:urlset/sitemap:url)"></xsl:value-of></h2>
- <p class="sml">Click on the table headers to change sorting.</p>
- <table border="1" width="100%" class="data" id="table0">
- <tr class="header">
- <td>Sitemap URL</td>
- <td>Last modification date</td>
- <td>Change freq.</td>
- <td>Priority</td>
- </tr>
- <xsl:apply-templates select="sitemap:urlset/sitemap:url">
- <xsl:sort select="sitemap:priority" order="descending"/>
- </xsl:apply-templates>
- </table>
- </xsl:template>
-
- <!-- sitemap:url template -->
- <xsl:template match="sitemap:url">
- <tr>
- <td>
- <xsl:variable name="sitemapURL"><xsl:value-of select="sitemap:loc"/></xsl:variable>
- <a href="{$sitemapURL}" target="_blank" ref="nofollow"><xsl:value-of select="$sitemapURL"></xsl:value-of></a>
- </td>
- <td><xsl:value-of select="sitemap:lastmod"/></td>
- <td><xsl:value-of select="sitemap:changefreq"/></td>
- <td><xsl:value-of select="sitemap:priority"/></td>
- </tr>
- </xsl:template>
-
- <!-- sitemap:sitemap template -->
- <xsl:template match="sitemap:sitemap">
- <tr>
- <td>
- <xsl:variable name="sitemapURL"><xsl:value-of select="sitemap:loc"/></xsl:variable>
- <a href="{$sitemapURL}"><xsl:value-of select="$sitemapURL"></xsl:value-of></a>
- </td>
- <td><xsl:value-of select="sitemap:lastmod"/></td>
- </tr>
- </xsl:template>
-
- </xsl:stylesheet>
|