<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C/DTD XHTML+Voice 1.2 /EN' 'http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voice12.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:ev='http://www.w3.org/2001/xml-events'>
<head>
<link rel='stylesheet' href='http://pabi3.com/modules/items/voice.css' type='text/css' media='all' />
<form xmlns='http://www.w3.org/2001/vxml' id='title'>
<block>
The article Vystup RSS kanalu v HTML formate pomocou XSLT a PHP is written by PaBi3
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='body'>
<block>

RSS kanal v dnesnej dobe nie je ziadnou zriedkavostou a najdeme ho takmer
na kazdom dobrom webe. Samozrejme iba vtedy ak je ho tam treba. RSS kanal si je
mozne nastylovat za pomoci technologie XSLT.
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='full'>
<block>

Aby sme mohli vypracovat vystup kanalu budeme musiet skontrolovat ci PHP
obsahuje extension XSL. Dalej budeme potrebovat jeden XML
subor, ktory bude mat zachovanu strukturu pre RSS (jeden taky si uvedieme
v priklade). Dalej si budeme musiet vytvorit XSL subor, ktory bude pre dany XML
subor fungovat ako styl.



Priklad XML (rss struktura) suboru:


&lt;rss version='2.0'&gt;
&lt;channel&gt;
&lt;title&gt;Titulok&lt;/title&gt;
&lt;link&gt;http://localhost/tpl/&lt;/link&gt;
&lt;description&gt;rss kanal pre Titulok&lt;/description&gt;
&lt;language&gt;sk&lt;/language&gt;
&lt;lastBuildDate&gt;Fri, 03 Feb 2006 14:36:25 GMT&lt;/lastBuildDate&gt;
&lt;image&gt;
&lt;title&gt;obrazok&lt;/title&gt;
&lt;url&gt;http://localhost/tpl/template.jpg&lt;/url&gt;
&lt;link&gt;http://localhost/tpl/&lt;/link&gt;
&lt;/image&gt;

&lt;item&gt;
&lt;title&gt;Clanok 3&lt;/title&gt; 
&lt;link&gt;http://localhost/tpl/clanok-3/&lt;/link&gt; 
&lt;description&gt;
Lorem ipsum dolor sit amet consectetuer id nibh Vestibulum nibh at. Senectus
gravida laoreet Cras pede convallis et id nibh consequat et. Libero parturient
Curabitur interdum arcu nunc id vel Vivamus a condimentum. Sed Vivamus turpis
montes nulla Proin Pellentesque sodales arcu pede ligula. Vestibulum elit ipsum
odio Nulla porttitor. Nibh sem elit nibh vestibulum sed vitae ac pretium Morbi
libero. Et gravida eros magna est et Aliquam lacus ut pede Quisque. Augue cursus
leo enim orci at accumsan tortor ligula Sed libero. Tortor orci sed Vivamus Nam
cursus eu rhoncus Phasellus habitasse nascetur. Pretium adipiscing auctor
lobortis at justo et pretium velit Aenean adipiscing. Condimentum dignissim eu.
&lt;/description&gt; 
&lt;pubDate&gt;Sat, 03 Dec 2005 18:49:55 GMT&lt;/pubDate&gt;
&lt;/item&gt;

&lt;item&gt;
&lt;title&gt;Clanok 2&lt;/title&gt; 
&lt;link&gt;http://localhost/tpl/clanok-2/&lt;/link&gt; 
&lt;description&gt;
Lorem ipsum dolor sit amet consectetuer id nibh Vestibulum nibh at. Senectus
gravida laoreet Cras pede convallis et id nibh consequat et. Libero parturient
Curabitur interdum arcu nunc id vel Vivamus a condimentum. Sed Vivamus turpis
montes nulla Proin Pellentesque sodales arcu pede ligula. Vestibulum elit ipsum
odio Nulla porttitor. Nibh sem elit nibh vestibulum sed vitae ac pretium Morbi
libero. Et gravida eros magna est et Aliquam lacus ut pede Quisque. Augue cursus
leo enim orci at accumsan tortor ligula Sed libero. Tortor orci sed Vivamus Nam
cursus eu rhoncus Phasellus habitasse nascetur. Pretium adipiscing auctor
lobortis at justo et pretium velit Aenean adipiscing. Condimentum dignissim eu.
&lt;/description&gt; 
&lt;pubDate&gt;Sat, 03 Dec 2005 15:39:55 GMT&lt;/pubDate&gt; 
&lt;/item&gt;

&lt;item&gt;
&lt;title&gt;Clanok 1&lt;/title&gt; 
&lt;link&gt;http://localhost/tpl/clanok-1/&lt;/link&gt; 
&lt;description&gt;
Lorem ipsum dolor sit amet consectetuer id nibh Vestibulum nibh at. Senectus
gravida laoreet Cras pede convallis et id nibh consequat et. Libero parturient
Curabitur interdum arcu nunc id vel Vivamus a condimentum. Sed Vivamus turpis
montes nulla Proin Pellentesque sodales arcu pede ligula. Vestibulum elit ipsum
odio Nulla porttitor. Nibh sem elit nibh vestibulum sed vitae ac pretium Morbi
libero. Et gravida eros magna est et Aliquam lacus ut pede Quisque. Augue cursus
leo enim orci at accumsan tortor ligula Sed libero. Tortor orci sed Vivamus Nam
cursus eu rhoncus Phasellus habitasse nascetur. Pretium adipiscing auctor
lobortis at justo et pretium velit Aenean adipiscing. Condimentum dignissim eu.
&lt;/description&gt; 
&lt;pubDate&gt;Sat, 03 Dec 2005 15:49:55 GMT&lt;/pubDate&gt; 
&lt;/item&gt;
&lt;/channel&gt; 
&lt;/rss&gt;


Priklad XSL sablony pre predchadzajuci RSS kanal:


&lt;xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'&gt;
  &lt;xsl:output method='html' encoding='utf-8'/&gt;
  &lt;xsl:template match='/'&gt;
    &lt;html&gt;
      &lt;head&gt;
        &lt;link rel='stylesheet' href='template.css' type='text/css' media='all' /&gt;
        &lt;title&gt;&lt;xsl:value-of select='rss/channel/title'/&gt;&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
        &lt;xsl:apply-templates/&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template match='channel'&gt;
    &lt;xsl:param name='abs-url' select='link'/&gt;
    &lt;xsl:param name='img-src' select='image/url'/&gt;
    &lt;xsl:param name='img-link' select='image/link'/&gt;
    &lt;div id='head'&gt;
      &lt;h1&gt;&lt;xsl:value-of select='title'/&gt;&lt;/h1&gt;
      &lt;div id='info'&gt;
        &lt;div&gt;
          &lt;a href='{$img-link}' title='Logo'&gt;&lt;img src='{$img-src}' alt='Logo' /&gt;&lt;/a&gt;
        &lt;/div&gt;
        &lt;xsl:value-of select='description'/&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;xsl:for-each select='item'&gt;
      &lt;xsl:param name='name' select='title'/&gt;
      &lt;xsl:param name='url' select='link'/&gt;
      &lt;div class='item'&gt;
        &lt;h2&gt;&lt;a href='#head' title='na vrch'&gt;Δ&lt;/a&gt; &lt;xsl:value-of select='title'/&gt;&lt;/h2&gt;
        &lt;a href='{$url}' title='{$name}'&gt;&lt;xsl:value-of select='link'/&gt;&lt;/a&gt;
        &lt;p&gt;&lt;xsl:value-of select='description'/&gt;&lt;/p&gt;
        &lt;span&gt;&lt;xsl:value-of select='pubDate'/&gt;&lt;/span&gt;
      &lt;/div&gt;
    &lt;/xsl:for-each&gt;
  &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;


Pridame CSS styl:

* { margin:0; padding:0; }
html, body { font-family:'Trebuchet MS', sans-serif; font-size:1em; padding:0.5em 1em 0.5em 1em; color:#444444; }
a { font-weight:bold; padding:0.1em; }
a:link    { color:#003366; text-decoration:underline; }
a:visited { color:#003366; text-decoration:underline; }
a:hover   { color:#ffffff; background:#003366; text-decoration:none; }
a:active  { color:#003366; text-decoration:underline; }
img { border:0; }

div#head { border:0.25em solid #003366; }
div#head h1 { padding:0.2em; color:#ffffff; font-weight:bold; background:#003366; }
div#head div#info { padding:0.5em 1em 0.5em 1em; }
div#head div#info div { text-align:center; }

div.item { cursor:default; padding:0 0 1em 0; margin:1em 0 1em 0; }
div.item:hover { color:#000000; background:#f2f2f2; }
div.item h2    { font-size:1.2em; padding:0.2em 0.5em 0.2em 0.5em; border:1px solid #cccccc; background:#003366; color:#ffffff; margin-bottom:0.5em; }
div.item h2 a  { color:#ffffff ! important; }
div.item p     { text-align:justify; margin-top:0.5em; }
div.item span  { float:right; font-weight:bold; }


PHP subor, ktory zabezpeci viazanie XML a XSL. Subory je mozne viazat aj cez
zapis &lt;?xml-stylesheet... ale nepouzijeme ho, pretoze tento priklad
zahrnuje aj pouzite jazyka PHP.


&lt;?php

$xml = new DOMDocument;
$xml->load('template.xml');
$xsl = new DOMDocument;
$xsl->load('template.xsl');

$convert = new XSLTProcessor;
$convert->importStyleSheet($xsl);

echo $convert->transformToXML($xml);

?&gt;


Vysledok si mozete prezriet na
tejto adrese.
Vyhodou takehoto stylovania je funkcnost zobrazenia v kazdom prehliadaci. Hlavny
ciel prikladu bol kladeny hlavne na princip funkcnosti technologie XSLT.
XML struktura RSS bola uvedena len ako priklad vyuzitia.



Najlepsi manual na XSLT najdete na adrese:
http://www.kosek.cz/xml/xslt/
</block>
</form>
<base href='http://pabi3.com/' />
<title>Výstup RSS kanálu v HTML formáte pomocou XSLT a PHP</title>
</head>
<body ev:event='load' ev:handler='#title'>
<a href='http://pabi3.com/blog/vystup-rss-kanalu-v-html-formate-pomocou-xslt-a-php/' title='Návrat'>Návrat</a>
<h1 style='padding:0.5em;'>Výstup RSS kanálu v HTML formáte pomocou XSLT a PHP</h1>
<ul>
<li ev:event='click' ev:handler='#body'>Speak introduction</li>
<li ev:event='click' ev:handler='#full'>Speak full</li>
</ul>
</body>
</html>
