RSS 2.0 prvek po prvku
<?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 jentitle,linkadescription. -
<item>je jeden článek. Musí mít aspoňtitlenebodescription, prakticky vždy uváděj ilink,guidapubDate. -
<guid>je trvalý identifikátor, podle kterého čtečka pozná, že článek už viděla. SisPermaLink="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);lengthje velikost v bajtech. -
atom:link rel="self"je adresa samotného feedu, kterou doporučují validátory;content:encodednese 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.
<?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"><p>Celý článek v <strong>HTML</strong>…</p></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.0 | Atom 1.0 | |
|---|---|---|
| Kořen | <rss version="2.0"><channel> | <feed xmlns="http://www.w3.org/2005/Atom"> |
| Položka | <item> | <entry> |
| Formát data | RFC 822: Tue, 29 Sep 2026 08:00:00 +0200 | RFC 3339: 2026-09-29T08:00:00+02:00 |
| Identifikátor | <guid> (nepovinný) | <id> (povinný, trvalý) |
| Datum změny | jen pubDate a lastBuildDate | <published> a povinné <updated> |
| Obsah v HTML | rozšíření content:encoded | <content type="html"> nebo xhtml |
| Jmenný prostor | žádný (rozšíření mají vlastní) | povinný |
| MIME typ | application/rss+xml | application/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:
<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
| Chyba | Dů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ích | ve čtečce nevedou nikam |
| znaky mimo UTF-8 nebo řídicí znaky z databáze | parser 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.