Tento kód vygeneruje soubor rss.xml, ve kterém bude nejčerstvějších 10 položek z různých databázových tabulek.

PHP:
class Rss{
  var $rows;
  var $count=0;

  function addItem($item){
    $this->rows[$this->count] = $item;
    $this->count++;
  }

  function getRow($i){
    return $this->rows[$i];
  }

  function sort(){
    usort($this->rows,"itemRssCmp");
  }
}

function itemRssCmp($a,$b){
  if ($a->timeStamp==$b->timeStamp) return 0;
  return ($a->timeStamp> $b->timeStamp) ? -1 : 1;
}

class Itemrss{
  var $title;
  var $link;
  var $guid;
  var $description;
  var $pubDate;
  var $category;
  var $timeStamp;
}

Vytvoříme instanci třídy Rss, do které později uložíme všechny položky.

PHP:
$rss = new Rss();

Jednotlivé položky se načtou z databáze a uloží do instance Itemrss, tato se následně přidá do objektu rss.

PHP:
$r = mysql_query("SELECT * FROM page ORDER BY date DESC LIMIT 10");
while ($row = mysql_fetch_array($r)){
  $item = new Itemrss();
  $item->category = "Stranky";
  $item->title = $row["title"];
  $item->description = $row["description"];
  $datum = $row["date"];
  $timestamp = strtotime($date);
  $item->timeStamp = $timestamp;
  $item->pubDate = date("r",$timestamp);
  $item->link = $row["page_url"];
  $item->guid = $item->link;
  $rss->addItem($item);
}

Další položky je možné přidávat z tabulky s úplně jinou strukturou:

PHP:
$r = mysql_query("SELECT * FROM news ORDER BY news_date DESC LIMIT 10");
while ($row = mysql_fetch_array($r)){
  $item = new Itemrss();
  $item->category = "Novinky";
  $item->title = $row["title"];
  $item->description = $row["text"];
  $item->link = "/news.php";
  $datum = $row["news_date"];
  $timestamp = strtotime($datum);
  $item->timeStamp = $timestamp;
  $item->pubDate = date("r",$timestamp);
  $rss->addItem($item);
}

Teď zbývá jen položky seřadit podle data a uložit do souboru rss.xml

PHP:
$rss->sort();

$xml = "";
$xml .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$xml .= "<rss version=\"2.0\">\n";
$xml .= "<channel>\n";
$xml .= "<title>Titulek stranky</title>\n";
$xml .= "<link>http://example.cz/</link>\n";
$xml .= "<description>Popis stranek</description>\n";
$xml .= "<language>cs</language>\n";
$xml .= "<generator>Napriklad vas CMS</generator>\n";
$xml .= "<copyright>Vase Jmeno</copyright>\n";
$xml .= "<category>web</category>\n";
$xml .= "<docs>http://backend.userland.com/rss</docs>\n";
$xml .= "\n";

for ($i=0;($i<$rss->pocet && $i<10);$i++){
  $xml .= "<item>\n";
  $xml .= "<title>" . strip_tags($rss->gedRow($i)->title) . "</title>\n";
  $xml .= "<link>" . $rss->getRow($i)->link . "</link>\n";
  if (isset($rss->getRow($i)->guid)) $xml .= "<guid>" . $rss->getRow($i)->guid . "</guid>\n";
  $xml .= "<description>" . strip_tags($rss->getRow($i)->description) . "</description>\n";
  $xml .= "<category>" . $rss->getRow($i)->category . "</category>\n";
  $xml .= "<pubDate>" . $rss->getRow($i)->pubDate . "</pubDate>";
  $xml .= "</item>\n";
}
$xml .= "</channel>\n";
$xml .= "</rss>\n";

if (!$handle = fopen("rss.xml", 'w')) {
        echo "Soubor nelze otevrit!";
        exit;
}
if (fwrite($handle, $xml) === FALSE) {
       echo "Soubor nelze ulozit!";
       exit;
}
fclose($handle);