2022-06-16 14:01:47 +02:00
< ? php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2019-11-15 23:26:29 +01:00
/**
* The XSL used to style sitemaps is essentially a bunch of
* static strings . This class handles the construction of
* those strings .
*
2021-04-27 08:32:47 +02:00
* @ package automattic / jetpack
2019-11-15 23:26:29 +01:00
* @ since 4.8 . 0
*/
/**
* Builds the XSL files required by Jetpack_Sitemap_Manager .
*
* @ since 4.8 . 0
*/
class Jetpack_Sitemap_Stylist {
/**
* Convert named entities , strip all HTML except anchor tags ,
* and interpolate with vsprintf . This is a helper function
* for all the internationalized UI strings in this class
* which have to include URLs .
*
* Note that $url_array should be indexed by integers like so :
*
* array (
* 1 => 'example.com' ,
* 2 => 'example.org' ,
* );
*
* Then '%1$s' in the format string will substitute 'example.com'
* and '%2$s' will substitute 'example.org' .
*
* @ access private
* @ since 4.8 . 0
* @ link https :// php . net / manual / en / function . vsprintf . php Format string documentation .
*
* @ param string $format A vsprintf - style format string to be sanitized .
* @ param array $url_array The string substitution array to be passed to vsprintf .
*
* @ return string The sanitized string .
*/
private static function sanitize_with_links ( $format , $url_array ) {
return vsprintf (
wp_kses (
ent2ncr ( $format ),
array (
'a' => array (
'href' => true ,
'title' => true ,
),
)
),
$url_array
);
}
/**
* Returns the xsl of a sitemap xml file as a string .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The contents of the xsl file .
*/
public static function sitemap_xsl () {
$title = esc_html ( ent2ncr ( __ ( 'XML Sitemap' , 'jetpack' ) ) );
$header_url = esc_html ( ent2ncr ( __ ( 'URL' , 'jetpack' ) ) );
$header_lastmod = esc_html ( ent2ncr ( __ ( 'Last Modified' , 'jetpack' ) ) );
$description = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: jetpack.com URL. %2$s: google.com URL. %3$s: bing.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'This is an XML Sitemap generated by <a href="%1$s" rel="noopener noreferrer" target="_blank">Jetpack</a>, meant to be consumed by search engines like <a href="%2$s" rel="noopener noreferrer" target="_blank">Google</a> or <a href="%3$s" rel="noopener noreferrer" target="_blank">Bing</a>.' ,
'jetpack'
),
array (
1 => 'https://jetpack.com/' ,
2 => 'https://www.google.com/' ,
3 => 'https://www.bing.com/' ,
)
);
$more_info = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: sitemaps.org URL. */
2019-11-15 23:26:29 +01:00
__ (
'You can find more information on XML sitemaps at <a href="%1$s" rel="noopener noreferrer" target="_blank">sitemaps.org</a>' ,
'jetpack'
),
array (
1 => 'https://sitemaps.org' ,
)
);
$generated_by = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %s: jetpack.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'Generated by <a href="%s" rel="noopener noreferrer" target="_blank">Jetpack for WordPress</a>' ,
'jetpack'
),
array (
1 => 'https://jetpack.com' ,
)
);
$css = self :: sitemap_xsl_css ();
return <<< XSL
< ? 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 > $title </ title >
< meta http - equiv = 'Content-Type' content = 'text/html; charset=utf-8' />
< style type = 'text/css' >
$css
</ style >
</ head >
< body >
< div id = 'description' >
< h1 > $title </ h1 >
< p > $description </ p >
< p > $more_info </ p >
</ div >
< div id = 'content' >
<!-- < xsl : value - of select = " count(sitemap:urlset/sitemap:url) " /> -->
< table >
< tr >
< th > #</th>
< th > $header_url </ th >
< th > $header_lastmod </ th >
</ tr >
< xsl : for - each select = " sitemap:urlset/sitemap:url " >
< tr >
< xsl : choose >
< xsl : when test = 'position() mod 2 != 1' >
< xsl : attribute name = " class " > odd </ xsl : attribute >
</ xsl : when >
</ xsl : choose >
< td >
< xsl : value - of select = " position() " />
</ td >
< td >
< xsl : variable name = 'itemURL' >
< xsl : value - of select = 'sitemap:loc' />
</ xsl : variable >
< a href = '{\$itemURL}' >
< xsl : value - of select = 'sitemap:loc' />
</ a >
</ td >
< td >
< xsl : value - of select = 'sitemap:lastmod' />
</ td >
</ tr >
</ xsl : for - each >
</ table >
</ div >
< div id = 'footer' >
< p > $generated_by </ p >
</ div >
</ body >
</ html >
</ xsl : template >
</ xsl : stylesheet > \n
XSL ;
}
/**
* Returns the xsl of a sitemap index xml file as a string .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The contents of the xsl file .
*/
public static function sitemap_index_xsl () {
$title = esc_html ( ent2ncr ( __ ( 'XML Sitemap Index' , 'jetpack' ) ) );
$header_url = esc_html ( ent2ncr ( __ ( 'Sitemap URL' , 'jetpack' ) ) );
$header_lastmod = esc_html ( ent2ncr ( __ ( 'Last Modified' , 'jetpack' ) ) );
$description = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: jetpack.com URL. %2$s: google.com URL. %3$s: bing.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'This is an XML Sitemap Index generated by <a href="%1$s" rel="noopener noreferrer" target="_blank">Jetpack</a>, meant to be consumed by search engines like <a href="%2$s" rel="noopener noreferrer" target="_blank">Google</a> or <a href="%3$s" rel="noopener noreferrer" target="_blank">Bing</a>.' ,
'jetpack'
),
array (
1 => 'https://jetpack.com/' ,
2 => 'https://www.google.com/' ,
3 => 'https://www.bing.com/' ,
)
);
if ( current_user_can ( 'manage_options' ) ) {
$next = human_time_diff ( wp_next_scheduled ( 'jp_sitemap_cron_hook' ) );
/* translators: %s is a human_time_diff until next sitemap generation. */
$no_nodes_warning = sprintf ( __ ( 'No sitemap found. The system will try to build it again in %s.' , 'jetpack' ), $next );
} else {
$no_nodes_warning = '' ;
}
$more_info = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: sitemaps.org URL. */
2019-11-15 23:26:29 +01:00
__ (
'You can find more information on XML sitemaps at <a href="%1$s" rel="noopener noreferrer" target="_blank">sitemaps.org</a>' ,
'jetpack'
),
array (
1 => 'https://sitemaps.org' ,
)
);
$generated_by = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %s: jetpack.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'Generated by <a href="%s" rel="noopener noreferrer" target="_blank">Jetpack for WordPress</a>' ,
'jetpack'
),
array (
1 => 'https://jetpack.com' ,
)
);
$css = self :: sitemap_xsl_css ();
return <<< XSL
< ? 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 > $title </ title >
< meta http - equiv = 'Content-Type' content = 'text/html; charset=utf-8' />
< style type = 'text/css' >
$css
</ style >
</ head >
< body >
< div id = 'description' >
< h1 > $title </ h1 >
< xsl : choose >
< xsl : when test = 'not(sitemap:sitemapindex/sitemap:sitemap)' >
< p >< strong > $no_nodes_warning </ strong ></ p >
</ xsl : when >
</ xsl : choose >
< p > $description </ p >
< p > $more_info </ p >
</ div >
< div id = 'content' >
< table >
< tr >
< th > #</th>
< th > $header_url </ th >
< th > $header_lastmod </ th >
</ tr >
< xsl : for - each select = 'sitemap:sitemapindex/sitemap:sitemap' >
< tr >
< xsl : choose >
< xsl : when test = 'position() mod 2 != 1' >
< xsl : attribute name = " class " > odd </ xsl : attribute >
</ xsl : when >
</ xsl : choose >
< td >
< xsl : value - of select = " position() " />
</ td >
< td >
< xsl : variable name = 'itemURL' >
< xsl : value - of select = 'sitemap:loc' />
</ xsl : variable >
< a href = '{\$itemURL}' >
< xsl : value - of select = 'sitemap:loc' />
</ a >
</ td >
< td >
< xsl : value - of select = 'sitemap:lastmod' />
</ td >
</ tr >
</ xsl : for - each >
</ table >
</ div >
< div id = 'footer' >
< p > $generated_by </ p >
</ div >
</ body >
</ html >
</ xsl : template >
</ xsl : stylesheet > \n
XSL ;
}
/**
* Returns the xsl of an image sitemap xml file as a string .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The contents of the xsl file .
*/
public static function image_sitemap_xsl () {
$title = esc_html ( ent2ncr ( __ ( 'XML Image Sitemap' , 'jetpack' ) ) );
$header_url = esc_html ( ent2ncr ( __ ( 'Page URL' , 'jetpack' ) ) );
$header_image_url = esc_html ( ent2ncr ( __ ( 'Image URL' , 'jetpack' ) ) );
$header_thumbnail = esc_html ( ent2ncr ( __ ( 'Thumbnail' , 'jetpack' ) ) );
$header_lastmod = esc_html ( ent2ncr ( __ ( 'Last Modified' , 'jetpack' ) ) );
$description = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: jetpack.com URL. %2$s: google.com URL. %3$s: bing.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'This is an XML Image Sitemap generated by <a href="%1$s" rel="noopener noreferrer" target="_blank">Jetpack</a>, meant to be consumed by search engines like <a href="%2$s" rel="noopener noreferrer" target="_blank">Google</a> or <a href="%3$s" rel="noopener noreferrer" target="_blank">Bing</a>.' ,
'jetpack'
),
array (
1 => 'https://jetpack.com/' ,
2 => 'https://www.google.com/' ,
3 => 'https://www.bing.com/' ,
)
);
$more_info = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: sitemaps.org URL. */
2019-11-15 23:26:29 +01:00
__ (
'You can find more information on XML sitemaps at <a href="%1$s" rel="noopener noreferrer" target="_blank">sitemaps.org</a>' ,
'jetpack'
),
array (
1 => 'https://sitemaps.org' ,
)
);
$generated_by = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %s: jetpack.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'Generated by <a href="%s" rel="noopener noreferrer" target="_blank">Jetpack for WordPress</a>' ,
'jetpack'
),
array (
1 => 'https://jetpack.com' ,
)
);
$css = self :: sitemap_xsl_css ();
return <<< XSL
< ? 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 : image = 'http://www.google.com/schemas/sitemap-image/1.1'
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 > $title </ title >
< meta http - equiv = 'Content-Type' content = 'text/html; charset=utf-8' />
< style type = 'text/css' >
$css
</ style >
</ head >
< body >
< div id = 'description' >
< h1 > $title </ h1 >
< p > $description </ p >
< p > $more_info </ p >
</ div >
< div id = 'content' >
<!-- < xsl : value - of select = " count(sitemap:urlset/sitemap:url) " /> -->
< table >
< tr >
< th > #</th>
< th > $header_url </ th >
< th > $header_image_url </ th >
< th > $header_lastmod </ th >
< th > $header_thumbnail </ th >
</ tr >
< xsl : for - each select = " sitemap:urlset/sitemap:url " >
< tr >
< xsl : choose >
< xsl : when test = 'position() mod 2 != 1' >
< xsl : attribute name = " class " > odd </ xsl : attribute >
</ xsl : when >
</ xsl : choose >
< td >
< xsl : value - of select = " position() " />
</ td >
< td >
< xsl : variable name = 'pageURL' >
< xsl : value - of select = 'sitemap:loc' />
</ xsl : variable >
< a href = '{\$pageURL}' >
< xsl : value - of select = 'sitemap:loc' />
</ a >
</ td >
< xsl : variable name = 'itemURL' >
< xsl : value - of select = 'image:image/image:loc' />
</ xsl : variable >
< td >
< a href = '{\$itemURL}' >
< xsl : value - of select = 'image:image/image:loc' />
</ a >
</ td >
< td >
< xsl : value - of select = 'sitemap:lastmod' />
</ td >
< td >
< a href = '{\$itemURL}' >
< img class = 'thumbnail' src = '{\$itemURL}' />
</ a >
</ td >
</ tr >
</ xsl : for - each >
</ table >
</ div >
< div id = 'footer' >
< p > $generated_by </ p >
</ div >
</ body >
</ html >
</ xsl : template >
</ xsl : stylesheet > \n
XSL ;
}
/**
* Returns the xsl of a video sitemap xml file as a string .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The contents of the xsl file .
*/
public static function video_sitemap_xsl () {
$title = esc_html ( ent2ncr ( __ ( 'XML Video Sitemap' , 'jetpack' ) ) );
$header_url = esc_html ( ent2ncr ( __ ( 'Page URL' , 'jetpack' ) ) );
$header_image_url = esc_html ( ent2ncr ( __ ( 'Video URL' , 'jetpack' ) ) );
$header_thumbnail = esc_html ( ent2ncr ( __ ( 'Thumbnail' , 'jetpack' ) ) );
$header_title = esc_html ( ent2ncr ( __ ( 'Title' , 'jetpack' ) ) );
$header_lastmod = esc_html ( ent2ncr ( __ ( 'Last Modified' , 'jetpack' ) ) );
$header_description = esc_html ( ent2ncr ( __ ( 'Description' , 'jetpack' ) ) );
$description = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: jetpack.com URL. %2$s: google.com URL. %3$s: bing.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'This is an XML Video Sitemap generated by <a href="%1$s" rel="noopener noreferrer" target="_blank">Jetpack</a>, meant to be consumed by search engines like <a href="%2$s" rel="noopener noreferrer" target="_blank">Google</a> or <a href="%3$s" rel="noopener noreferrer" target="_blank">Bing</a>.' ,
'jetpack'
),
array (
1 => 'https://jetpack.com/' ,
2 => 'https://www.google.com/' ,
3 => 'https://www.bing.com/' ,
)
);
$more_info = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: sitemaps.org URL. */
2019-11-15 23:26:29 +01:00
__ (
'You can find more information on XML sitemaps at <a href="%1$s" rel="noopener noreferrer" target="_blank">sitemaps.org</a>' ,
'jetpack'
),
array (
1 => 'https://sitemaps.org' ,
)
);
$generated_by = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %s: jetpack.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'Generated by <a href="%s" rel="noopener noreferrer" target="_blank">Jetpack for WordPress</a>' ,
'jetpack'
),
array (
1 => 'https://jetpack.com' ,
)
);
$css = self :: sitemap_xsl_css ();
return <<< XSL
< ? 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 : video = 'http://www.google.com/schemas/sitemap-video/1.1'
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 > $title </ title >
< meta http - equiv = 'Content-Type' content = 'text/html; charset=utf-8' />
< style type = 'text/css' >
$css
</ style >
</ head >
< body >
< div id = 'description' >
< h1 > $title </ h1 >
< p > $description </ p >
< p > $more_info </ p >
</ div >
< div id = 'content' >
<!-- < xsl : value - of select = " count(sitemap:urlset/sitemap:url) " /> -->
< table >
< tr >
< th > #</th>
< th > $header_url </ th >
< th > $header_image_url </ th >
< th > $header_title </ th >
< th > $header_description </ th >
< th > $header_lastmod </ th >
< th > $header_thumbnail </ th >
</ tr >
< xsl : for - each select = " sitemap:urlset/sitemap:url " >
< tr >
< xsl : choose >
< xsl : when test = 'position() mod 2 != 1' >
< xsl : attribute name = " class " > odd </ xsl : attribute >
</ xsl : when >
</ xsl : choose >
< td >
< xsl : value - of select = " position() " />
</ td >
< td >
< xsl : variable name = 'pageURL' >
< xsl : value - of select = 'sitemap:loc' />
</ xsl : variable >
< a href = '{\$pageURL}' >
< xsl : value - of select = 'sitemap:loc' />
</ a >
</ td >
< xsl : variable name = 'itemURL' >
< xsl : value - of select = 'video:video/video:content_loc' />
</ xsl : variable >
< td >
< a href = '{\$itemURL}' >
< xsl : value - of select = 'video:video/video:content_loc' />
</ a >
</ td >
< td >
< xsl : value - of select = 'video:video/video:title' />
</ td >
< td >
< xsl : value - of select = 'video:video/video:description' disable - output - escaping = 'yes' />
</ td >
< td >
< xsl : value - of select = 'sitemap:lastmod' />
</ td >
< td >
< xsl : variable name = 'thumbURL' >
< xsl : value - of select = 'video:video/video:thumbnail_loc' />
</ xsl : variable >
< a href = '{\$thumbURL}' >
< img class = 'thumbnail' src = '{\$thumbURL}' />
</ a >
</ td >
</ tr >
</ xsl : for - each >
</ table >
</ div >
< div id = 'footer' >
< p > $generated_by </ p >
</ div >
</ body >
</ html >
</ xsl : template >
</ xsl : stylesheet > \n
XSL ;
}
/**
* Returns the xsl of a news sitemap xml file as a string .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The contents of the xsl file .
*/
public static function news_sitemap_xsl () {
$title = esc_html ( ent2ncr ( __ ( 'XML News Sitemap' , 'jetpack' ) ) );
$header_url = esc_html ( ent2ncr ( __ ( 'Page URL' , 'jetpack' ) ) );
$header_title = esc_html ( ent2ncr ( __ ( 'Title' , 'jetpack' ) ) );
$header_pubdate = esc_html ( ent2ncr ( __ ( 'Publication Date' , 'jetpack' ) ) );
$description = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: jetpack.com URL. %2$s: google.com URL. %3$s: bing.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'This is an XML News Sitemap generated by <a href="%1$s" rel="noopener noreferrer" target="_blank">Jetpack</a>, meant to be consumed by search engines like <a href="%2$s" rel="noopener noreferrer" target="_blank">Google</a> or <a href="%3$s" rel="noopener noreferrer" target="_blank">Bing</a>.' ,
'jetpack'
),
array (
1 => 'https://jetpack.com/' ,
2 => 'https://www.google.com/' ,
3 => 'https://www.bing.com/' ,
)
);
$more_info = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %1$s: sitemaps.org URL. */
2019-11-15 23:26:29 +01:00
__ (
'You can find more information on XML sitemaps at <a href="%1$s" rel="noopener noreferrer" target="_blank">sitemaps.org</a>' ,
'jetpack'
),
array (
1 => 'https://sitemaps.org' ,
)
);
$generated_by = self :: sanitize_with_links (
2022-06-16 14:01:47 +02:00
/* translators: %s: jetpack.com URL. */
2019-11-15 23:26:29 +01:00
__ (
'Generated by <a href="%s" rel="noopener noreferrer" target="_blank">Jetpack for WordPress</a>' ,
'jetpack'
),
array (
1 => 'https://jetpack.com' ,
)
);
$css = self :: sitemap_xsl_css ();
return <<< XSL
< ? 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 : news = 'http://www.google.com/schemas/sitemap-news/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 > $title </ title >
< meta http - equiv = 'Content-Type' content = 'text/html; charset=utf-8' />
< style type = 'text/css' >
$css
</ style >
</ head >
< body >
< div id = 'description' >
< h1 > $title </ h1 >
< p > $description </ p >
< p > $more_info </ p >
</ div >
< div id = 'content' >
<!-- < xsl : value - of select = " count(sitemap:urlset/sitemap:url) " /> -->
< table >
< tr >
< th > #</th>
< th > $header_url </ th >
< th > $header_title </ th >
< th > $header_pubdate </ th >
</ tr >
< xsl : for - each select = " sitemap:urlset/sitemap:url " >
< tr >
< xsl : choose >
< xsl : when test = 'position() mod 2 != 1' >
< xsl : attribute name = " class " > odd </ xsl : attribute >
</ xsl : when >
</ xsl : choose >
< td >
< xsl : value - of select = " position() " />
</ td >
< xsl : variable name = 'pageURL' >
< xsl : value - of select = 'sitemap:loc' />
</ xsl : variable >
< td >
< a href = '{\$pageURL}' >
< xsl : value - of select = 'sitemap:loc' />
</ a >
</ td >
< td >
< a href = '{\$pageURL}' >
< xsl : value - of select = 'news:news/news:title' />
</ a >
</ td >
< td >
< xsl : value - of select = 'news:news/news:publication_date' />
</ td >
</ tr >
</ xsl : for - each >
</ table >
</ div >
< div id = 'footer' >
< p > $generated_by </ p >
</ div >
</ body >
</ html >
</ xsl : template >
</ xsl : stylesheet > \n
XSL ;
}
/**
* The CSS to be included in sitemap xsl stylesheets ;
* factored out for uniformity .
*
* @ access public
* @ since 4.8 . 0
*
* @ return string The CSS .
*/
public static function sitemap_xsl_css () {
return <<< CSS
body {
font : 14 px 'Open Sans' , Helvetica , Arial , sans - serif ;
margin : 0 ;
}
a {
color : #3498db;
text - decoration : none ;
}
h1 {
margin : 0 ;
}
#description {
2023-12-07 09:44:11 +01:00
background - color : #f0f2eb;
color : #000;
2019-11-15 23:26:29 +01:00
padding : 30 px 30 px 20 px ;
}
#description a {
2023-12-07 09:44:11 +01:00
color : #008710;
2019-11-15 23:26:29 +01:00
}
#content {
padding : 10 px 30 px 30 px ;
background : #fff;
}
a : hover {
border - bottom : 1 px solid ;
}
th , td {
font - size : 12 px ;
}
th {
text - align : left ;
border - bottom : 1 px solid #ccc;
}
th , td {
padding : 10 px 15 px ;
}
. odd {
2023-12-07 09:44:11 +01:00
background : linear - gradient ( 159.87 deg , #f6f6f4 7.24%, #f7f4ea 64.73%, #ddedd5 116.53% );
2019-11-15 23:26:29 +01:00
}
#footer {
margin : 20 px 30 px ;
font - size : 12 px ;
color : #999;
}
#footer a {
color : inherit ;
}
#description a, #footer a {
border - bottom : 1 px solid ;
}
#description a:hover, #footer a:hover {
border - bottom : none ;
}
img {
max - height : 100 px ;
max - width : 100 px ;
}
CSS ;
}
}