logo   RSS - Om RSS




RSS feeds anvendes i stor udstræknng af nyhedstjenester, bloggere og andre til at stille data nemt til rådighed for andre - uden at disse skal have adgang til / belaste database etc.


Interesserede kan nemt få adgang til dataene med en FEED-reader (f.eks: x eller x) eller med egen kode.


Oversigter over URL til nogle danske RSS-udbud kan ses her: x RSS kataloget og her x Spontek. Ikke alle links synes dog at virke lige godt.


Den strukturerede opbygning af RSS-filer udgør dermed et optimalt krydsfelt mellem udbydere og efterspørgere.


Efter at være defineret som en XML-fil skal de to yderste niveauer i en RSS-fil altid være de indlejrende obligatoriske tags RSS og CHANNEL.


Indeni CHANNEL kan på niveau tre anvendes op til 19 tags. De 18 kan kun forekomme en gang pr fil. Den sidste (ITEM) skal forekomme mellem 1 og et ubegrænset gange.


På niveau 3 er kun TITLE, DESCRIPTION, LINK og ITEM obligatoriske. I ITEM er TITLE og DESCRIPTION obligatoriske


Fem RSS-tags på niveau 3 er indlejrende og indeholder tags på niveau 4: SKIPHOURS, SKIPDAYS, IMAGE, ITEM og TEXT INPUT. I det omfang de anvendes er mindst et tag i dem (og lukketagget) obligatorisk.


W3's validator til RSS-filer kan nås herfra x


URL til brug i RSS-readere er den samme som i en browser anvendes til at vise det pågældende XML-dokument: "http:// ... xx.xml".




Database tabeller


Data til RSS-feeds skal lagres i to databasetabeller med denne minimumopbygning:


dbtabeller


Der kan i den enkelte situation være nødvendigt / hensigtmæssigt med flere styrende tabeller (incl. tabeller med data til engangs-felterne i channel).




Program


Et PHP-baseret program til etablering af RSS-filer kan opbygges efter nedenstående retningslinier:


<?php
$query_chan = "select * from categories where category_id = $category_id";
$result_chan = mysqli_query($database_link, $query_chan) or die(mysqli_error($database_link));
$row_chan = mysqli_fetch_assoc ($result_chan);
$antal_chan = mysqli_num_rows ($result_chan);

$query_item = "select * from news where fk_categories_id = $category_id";
$result_item = mysqli_query($database_link, $query_item) or die(mysqli_error($database_link));
$antal_item = mysqli_num_rows ($result_item);

$cat = strtolower($row['category_title']);
$stifil = "../".$cat.".xml";

if($antal_item > 0)
{
$dom = new DOMDocument('1.0', 'utf-8');
   //indsæt 'rss'
   $rss = $dom->createElement('rss');
   $rss->setAttribute('version', '2.0');
   $dom->appendChild($rss);
      //indsæt 'channel'
      $channel = $dom -> createElement ('channel');
      $channel -> appendChild ($dom -> createElement('title', $row_chan['category_title']));
      $channel -> appendChild ($dom -> createElement('link','http://webdok.dk'));
      $channel -> appendChild ($dom -> createElement('description', $row_chan['category_description']));
      // Indsææt item
      while($row_item = mysqli_fetch_assoc ($result_item))
      {
         $item = $dom -> createElement ('item');
         $item -> appendChild ($dom -> createElement('title', $row_item['news_title']));
         $item -> appendChild ($dom -> createElement('description', $row_item['news_content']));
         $channel -> appendChild ($item);
      }
// slut channel
      $rss -> appendChild ($channel);
// afslutning
$dom -> formatOutput = true;
$dom -> save($stifil); // if(antal_item > 0)
}
?>


De resulterende filer gemmes på et site, så de er webtilgængelige.




Billeder - Items


Under item-taget er der ikke noget element til billeder. Alligevel vises der på nogle webfeeds vises billeder sammen med de enkelte items (oftest små thumbnails placeret forrest).





Filen


En fil dannet med ovenfor viste kode ser strukturelt sådan ud (kun vist 2+1 items):


<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
       <title>Gaming</title>
       <link>http://webdok.dk</link>
       <description>Gaming nyheder...</description>
       <item>
          <title>Maecenas interdum</title>
          <description>Vestibulum congue neque sed felis iaculis tincidunt malesuada non ... dui.</description>
       </item>
       <item>
          <title>Nunc faucibus ipsum</title>
          <description>Nunc faucibus ipsum faucibus eleifend auctor. Nullam et sem ... turpis.</description>
       </item>
.
.
       <item>
          <title>Maecenas interdum</title>
          <description><p>Morbi interdum adipiscing iaculis. Phasellus eu felis... dui.</description>
       </item>
   </channel>
</rss>




















x
x