• User

    StyleSheet per Sitemaps

    Sto cercando di implementare un foglio di stile per la mia sitemap ma non sembra funzionare.
    Ho preso come esempio la sitemap di questo sito qui: view-source:computer-acquisti.com/blog/sitemap.xml

    la definizione che richiama il foglio di stile è:

    
    <?xml-stylesheet type="text/xsl" href="computer-acquisti.com/blog/wp-content/plugins/google-sitemap-generator/sitemap.xsl"?>
    
    

    questo sitemap.xsl è un file generato da un plugin wordpress.
    L'ho preso ad esempio e l'ho ricreato sul mio sito, la mia sitemap comincia così:

    
    <?xml version="1.0" encoding="UTF-8"?> 
    <?xml-stylesheet href="mioSito/css/sitemap.xsl" type="text/xsl"?> 
    <urlset xmlns=".sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:schemaLocation=".sitemaps.org/schemas/sitemap/0.9 .sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
      <url> 
        <loc>mioSito/catalogo</loc> 
        <lastmod>2011-05-25T00:00:00+02:00</lastmod> 
        <changefreq>daily</changefreq> 
        <priority>1</priority> 
      </url> 
    [... etc ...]
    </urlset>
    
    

    se vado all'indirizzo mioSito/css/sitemap.xsl vedo correttamente il mio template
    (così come lo vedreste andando all'indirizzo computer-acquisti.com/blog/wp-content/plugins/google-sitemap-generator/sitemap.xsl)

    ma nella mia sitemap (mioSito/sitemap.xml) non risulta nessuna stilizzazione, anzi, gli elementi vengono sparati in output senza nemmeno la dicitura "This XML file does not appear to have any style information associated with it"
    come da questo esempio qui:
    .emilianovestri.it/sitemap.xml

    questo mi fa pensare che la mia sitemap non è corretta, ma né trovo errori nella sitemap né validatori che funzionino offline...

    Qualche suggerimento?

    PS: per generare la sitemap uso lo Zend Framework con qualche modifica.
    PPS: per poter postare ho dovuto omettere tutte le intestazioni dei link


  • User

    Il problema era dello Zend Framework.

    Vi riporto la souzione:

    Bisogna impostare un router statico in questo modo:

    
    routes.sitemap.type 										= "Zend_Controller_Router_Route_Static"
    routes.sitemap.route 										= "sitemap.xml"
    routes.sitemap.defaults.module	 							= "default"
    routes.sitemap.defaults.controller 							= "index"
    routes.sitemap.defaults.action	 							= "sitemap"
    routes.sitemap.defaults.format 								= "xml" 
    
    

    Nell'Index controller:

    
    public function init()
        {
            parent::init();
    		$this->_helper->contextSwitch 
    			->addActionContext('sitemap', 'xml') 
    			->initContext(); 
        }
    public function sitemapAction(){ }
    
    

    e nel sitemap.xml.phtml:

    
    
    $this->navigation()
          ->sitemap()
          ->setUseSchemaValidation(true)
          ->setUseSitemapValidators(true)
          ->setFormatOutput(false);
     
    $domDoc = $this->navigation()->sitemap()->getDomSitemap();
    
    $styleheetParams = 'href="/css/sitemap.xsl" type="text/xsl"';
    
    $xmlstylesheet = new DOMProcessingInstruction( 'xml-stylesheet', $styleheetParams);
    
    $urlset = $domDoc->getElementsByTagName('urlset')->item(0);
    $urlset->setAttribute('xmlns:xsi', 'hppp://wmw.w3.org/2001/XMLSchema-instance');
    $urlset->setAttribute('xsi:schemaLocation', 'hppp://wmw.sitemaps.org/schemas/sitemap/0.9 hppp://wmw.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd');
    
    $domDoc->insertBefore($xmlstylesheet, $urlset);
    
    echo $domDoc->saveXML();
    
    
    

    [...]

    PPS: sempre per il solito motivo ho dovuto inserire hppp://wmw apposta degli originali