NAME
   WWW::Sitemap::XML - XML Sitemap protocol

VERSION
   version 2.02

SYNOPSIS
       use WWW::Sitemap::XML;

       my $map = WWW::Sitemap::XML->new();

       # add new url
       $map->add( 'http://mywebsite.com/' );

       # or
       $map->add(
           loc => 'http://mywebsite.com/',
           lastmod => '2010-11-22',
           changefreq => 'monthly',
           priority => 1.0,
           mobile => 1,
           images => [
               {
                   loc => 'http://mywebsite.com/image1.jpg',
                   caption => 'Caption 1',
                   title => 'Title 1',
                   license => 'http://www.mozilla.org/MPL/2.0/',
                   geo_location => 'Town, Region',
               },
               {
                   loc => 'http://mywebsite.com/image2.jpg',
                   caption => 'Caption 2',
                   title => 'Title 2',
                   license => 'http://www.mozilla.org/MPL/2.0/',
                   geo_location => 'Town, Region',
               }
           ],
           videos => {
               content_loc => 'http://mywebsite.com/video1.flv',
               player => {
                   loc => 'http://mywebsite.com/video_player.swf?video=1',
                   allow_embed => "yes",
                   autoplay => "ap=1",
               },
               thumbnail_loc => 'http://mywebsite.com/thumbs/1.jpg',
               title => 'Video Title 1',
               description => 'Video Description 1',
           }
       );

       # or
       $map->add(
           WWW::Sitemap::XML::URL->new(
               loc => 'http://mywebsite.com/',
               lastmod => '2010-11-22',
               changefreq => 'monthly',
               priority => 1.0,
               mobile => 1,
               images => [
                   WWW::Sitemap::XML::Google::Image->new(
                       {
                           loc => 'http://mywebsite.com/image1.jpg',
                           caption => 'Caption 1',
                           title => 'Title 1',
                           license => 'http://www.mozilla.org/MPL/2.0/',
                           geo_location => 'Town, Region',
                       },
                   ),
                   WWW::Sitemap::XML::Google::Image->new(
                       {
                           loc => 'http://mywebsite.com/image2.jpg',
                           caption => 'Caption 2',
                           title => 'Title 2',
                           license => 'http://www.mozilla.org/MPL/2.0/',
                           geo_location => 'Town, Region',
                       }
                   ),
               ],
               videos => [
                   WWW::Sitemap::XML::Google::Video->new(
                       content_loc => 'http://mywebsite.com/video1.flv',
                       player => WWW::Sitemap::XML::Google::Video::Player->new(
                           {
                               loc => 'http://mywebsite.com/video_player.swf?video=1',
                               allow_embed => "yes",
                               autoplay => "ap=1",
                           }
                       ),
                       thumbnail_loc => 'http://mywebsite.com/thumbs/1.jpg',
                       title => 'Video Title 1',
                       description => 'Video Description 1',
                   ),
               ],
           )
       );

       # read URLs from existing sitemap.xml file
       my @urls = $map->read( location => 'sitemap.xml' );

       # load urls from existing sitemap.xml file
       $map->load( location => 'sitemap.xml' );

       # get XML::LibXML object
       my $xml = $map->as_xml;

       print $xml->toString(1);

       # write to file
       $map->write( 'sitemap.xml', my $pretty_print = 1 );

       # write compressed
       $map->write( 'sitemap.xml.gz' );

DESCRIPTION
   Read and write sitemap XML files as defined at
   <http://www.sitemaps.org/> and with support of Google video, image and
   mobile extensions described at
   <https://support.google.com/webmasters/answer/183668>.

METHODS
 add($url|%attrs)
       $map->add(
           WWW::Sitemap::XML::URL->new(
               loc => 'http://mywebsite.com/',
               lastmod => '2010-11-22',
               changefreq => 'monthly',
               priority => 1.0,
           )
       );

   Add the $url object representing single page in the sitemap.

   Accepts blessed objects implementing WWW::Sitemap::XML::URL::Interface.

   Otherwise the arguments %attrs are passed as-is to create new
   WWW::Sitemap::XML::URL object.

       $map->add(
           loc => 'http://mywebsite.com/',
           lastmod => '2010-11-22',
           changefreq => 'monthly',
           priority => 1.0,
       );

       # single url argument
       $map->add( 'http://mywebsite.com/' );

       # is same as
       $map->add( loc => 'http://mywebsite.com/' );

   Performs basic validation of URLs added:

   *   maximum of 50 000 URLs in single sitemap

   *   URL no longer then 2048 characters

   *   all URLs should use the same protocol and reside on same host

 urls
       my @urls = $map->urls;

   Returns a list of all URL objects added to sitemap.

 load(%sitemap_location)
       $map->load( location => $sitemap_file );

   It is a shortcut for:

       $map->add($_) for $map->read( location => $sitemap_file );

   Please see "read" for details.

 read(%sitemap_location)
       # file or url to sitemap
       my @urls = $map->read( location => $file_or_url );

       # file handle
       my @urls = $map->read( IO => $fh );

       # XML string
       my @urls = $map->read( string => $xml );

   Read the sitemap from file, URL, open file handle or string and return
   the list of WWW::Sitemap::XML::URL objects representing "<url>"
   elements.

 write($file, $format = 0)
       # write to file
       $map->write( 'sitemap.xml', my $pretty_print = 1);

       # or
       my $fh = IO::File->new();
       $fh->open('sitemap.xml', 'w');
       $map->write( $fh, my $pretty_print = 1);
       $cfh->close;

       # write compressed
       $map->write( 'sitemap.xml.gz' );

   Write XML sitemap to $file - a file name or IO::Handle object.

   If file names ends in ".gz" then the output file will be compressed by
   setting compression on XML object - please note that it requires
   *libxml2* to be compiled with *zlib* support.

   Optional $format is passed to "toFH" or "toFile" methods (depending on
   the type of $file, respectively for file handle and file name) as
   described in XML::LibXML.

 as_xml
       my $xml = $map->as_xml;

       # pretty print
       print $xml->toString(1);

       # write compressed
       $xml->setCompression(8);
       $xml->toFile( 'sitemap.xml.gz' );

   Returns XML::LibXML::Document object representing the sitemap in XML
   format.

   The "<url>" elements are built by calling *as_xml* on all URL objects
   added into sitemap.

SEE ALSO
   WWW::SitemapIndex::XML

   <http://www.sitemaps.org/>

   <https://support.google.com/webmasters/answer/183668>

AUTHOR
   Alex J. G. Burzyński <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2014 by Alex J. G. Burzyński
   <[email protected]>.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.