RSS a Atom: jak vypadá XML feed zevnitř

RSS a Atom jsou XML formáty, přes které weby, blogy a podcasty oznamují nový obsah čtečkám, agregátorům i automatizacím. Kapitola rozebírá oba formáty prvek po prvku, ukazuje rozdíly mezi nimi a chyby, kvůli kterým čtečka feed odmítne.

Autor: Aktualizováno

RSS 2.0 prvek po prvku

rss.xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blog XML.cz</title>
    <link>https://www.example.cz/blog/</link>
    <description>Novinky ze světa XML</description>
    <language>cs</language>
    <lastBuildDate>Tue, 29 Sep 2026 08:00:00 +0200</lastBuildDate>
    <atom:link href="https://www.example.cz/blog/rss.xml" rel="self" type="application/rss+xml"/>

    <item>
      <title>Jak na XPath v PHP</title>
      <link>https://www.example.cz/blog/xpath-v-php/</link>
      <guid isPermaLink="true">https://www.example.cz/blog/xpath-v-php/</guid>
      <pubDate>Mon, 28 Sep 2026 14:30:00 +0200</pubDate>
      <author>redakce@example.cz (Jana Nováková)</author>
      <category>PHP</category>
      <description>Krátké shrnutí článku jako prostý text.</description>
      <content:encoded><![CDATA[<p>Celý článek v <strong>HTML</strong>…</p>]]></content:encoded>
      <enclosure url="https://www.example.cz/media/dil-12.mp3" length="24986239" type="audio/mpeg"/>
    </item>
  </channel>
</rss>
  • <channel> popisuje celý web: povinné jsou jen title, link a description.
  • <item> je jeden článek. Musí mít aspoň title nebo description, prakticky vždy uváděj i link, guid a pubDate.
  • <guid> je trvalý identifikátor, podle kterého čtečka pozná, že článek už viděla. S isPermaLink="true" je to zároveň adresa článku.
  • <pubDate> má formát podle RFC 822 s anglickými zkratkami dne a měsíce — česká data nebo ISO formát do RSS nepatří.
  • <enclosure> připojí soubor (podcastovou epizodu); length je velikost v bajtech.
  • atom:link rel="self" je adresa samotného feedu, kterou doporučují validátory; content:encoded nese celý článek v HTML, obvykle v sekci CDATA.

Atom 1.0

Atom (RFC 4287) vznikl jako přesněji specifikovaná alternativa k RSS. Má povinný jmenný prostor, jednoznačné formáty data a u každého záznamu trvalé id a čas poslední změny updated.

atom.xml
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
  <title>Blog XML.cz</title>
  <id>https://www.example.cz/blog/</id>
  <link href="https://www.example.cz/blog/"/>
  <link href="https://www.example.cz/blog/atom.xml" rel="self"/>
  <updated>2026-09-29T08:00:00+02:00</updated>
  <author><name>Redakce XML.cz</name></author>

  <entry>
    <title>Jak na XPath v PHP</title>
    <id>tag:example.cz,2026:blog/xpath-v-php</id>
    <link href="https://www.example.cz/blog/xpath-v-php/"/>
    <published>2026-09-28T14:30:00+02:00</published>
    <updated>2026-09-28T16:05:00+02:00</updated>
    <summary>Krátké shrnutí článku.</summary>
    <content type="html">&lt;p&gt;Celý článek v &lt;strong&gt;HTML&lt;/strong&gt;…&lt;/p&gt;</content>
    <category term="PHP"/>
  </entry>
</feed>

Pozor na výchozí jmenný prostor: XPath dotaz //entry/title nad Atomem nic nenajde, protože prvky leží v prostoru http://www.w3.org/2005/Atom. Pomůže //*[local-name()='entry']/*[local-name()='title'] nebo zaregistrovaný prefix.

RSS, nebo Atom?

RSS 2.0Atom 1.0
Kořen<rss version="2.0"><channel><feed xmlns="http://www.w3.org/2005/Atom">
Položka<item><entry>
Formát dataRFC 822: Tue, 29 Sep 2026 08:00:00 +0200RFC 3339: 2026-09-29T08:00:00+02:00
Identifikátor<guid> (nepovinný)<id> (povinný, trvalý)
Datum změnyjen pubDate a lastBuildDate<published> a povinné <updated>
Obsah v HTMLrozšíření content:encoded<content type="html"> nebo xhtml
Jmenný prostoržádný (rozšíření mají vlastní)povinný
MIME typapplication/rss+xmlapplication/atom+xml

Čtečky zvládnou oba formáty. RSS je rozšířenější (a pro podcasty prakticky povinné kvůli rozšířením Apple a Spotify), Atom je přesnější a snáz se správně generuje.

Propojení feedu s webem

Aby prohlížeče a čtečky feed samy našly, patří do <head> stránky odkaz:

HTML
<link rel="alternate" type="application/rss+xml" title="Blog XML.cz" href="/blog/rss.xml">
<link rel="alternate" type="application/atom+xml" title="Blog XML.cz (Atom)" href="/blog/atom.xml">

Stylovaný feed v prohlížeči končí. Feed se dá opatřit instrukcí <?xml-stylesheet type="text/xsl"?>, aby se návštěvníkovi, který na něj klikne, zobrazil jako čitelná stránka s návodem k odběru. Chrome ale vestavěné XSLT ve verzi 158 (17. listopadu 2026) vypíná a feed se pak ukáže jako holé XML. Čteček se to netýká, instrukci nepoužívají. Pro lidi je lepší samostatná HTML stránka „Odebírat“ s odkazem na feed, případně jednodušší stylování přes CSS (type="text/css"), které funguje dál. Více v kapitole XSLT v prohlížeči končí.

Nejčastější chyby

ChybaDůsledek
datum ve tvaru 2026-09-29 v RSS pubDatečtečky datum ignorují nebo feed odmítnou
GUID se mění (např. obsahuje parametr ?utm)čtečky ukazují stejný článek znovu jako nový
HTML v <description> bez CDATA nebo escapovánífeed není dobře formovaný XML
relativní URL v odkazech a obrázcíchve čtečce nevedou nikam
znaky mimo UTF-8 nebo řídicí znaky z databázeparser skončí chybou na daném řádku

Feed generuj XML knihovnou, ne skládáním řetězců — ta se sama postará o escapování znaků & a <. Hotový soubor si ověř ve validátoru.