Разработчики каналов новостей имеют определенную возможность выбора среди форматов синдикации, однако с середины 2005 г актуальными остались два из них: RSS 2.0 и Atom 1.0. Сравним, насколько это возможно, функциональность этих форматов по следующим критериям:
В середине 2005 года, когда стандарт Atom был только принят, он использовался лишь на нескольких десятках сайтов. В то же время RSS 2.0 был широко распространен на различных социальных сервисах.
К началу 2006 года Atom 1.0 стал получать распространение и стал проблемой для программ-агрегаторов, которые не могли разобрать формат, не похожий на RSS. Разработчики агрегаторов принялись патчить свои программы на основе баг-репортов.
К середине 2006 года, благодаря активному продвижению W3C и поддержке со стороны Google, IBM и еще ряда корпораций, Atom стал основным форматом для многих крупных онлайн-сервисов. При этом популярность RSS 2.0 не снизилась, так как контент-провайдеры зачастую стали представлять новости в обоих форматах, на выбор.
Авторские права на спецификацию RSS 2.0 принадлежат Гарвардскому Университету и проект заморожен. Хотя спецификация находится под лицензией Creative Commons никаких существенных изменений в ней не может быть сделано. Дэйв Уинер (Dave Winer), один из главных разработчиков RSS, призвал разработчиков объединить свои усилия и разработать единый формат, совместимый как с RSS, так и с Atom, чтобы слить конкурентные стандарты в единое целое.
Atom — открытый стандарт IETF, который продолжает развиваться и совершенствоваться.
RSS 2.0 представляет скудные встроенные возможности публикации, но на основе спецификации были разработаны проприетарные протоколы, наиболее популярные из них — MetaWeblog и Blogger. Оба протокола не лишены недостатков и слабо совместимы между собой.
Спецификация Atom имеет собственный стандартный протокол публикации Atom Publishing Protocol (Atompub), тесно интегрированный с Atom Syndication Format.
RSS 2.0 требует наличия названия, ссылки и описания на уровне канала (метаинформации) и не требует, чтобы любое из этих полей отдельных элементов канала было представлено.
Atom 1.0 требует, чтобы и канал и записи включали названия (которое может быть пустым), уникальный идентификатор и временные метки последего обновления.
Канал RSS 2.0 может содержать только текстовую, или только гипертекстовую (HTML-escaped, теги экранируются в CDATA) информацию, без возможности указания, какое предоставление используется. Экранированные HTML (например, строка AT&T будет представлена как AT&T) привносят дополнительные сложности разработчикам. Модель содержания заголовков (<title>
) не определена. Заголовки с угловыми скобками или амперсандами будут интерпретированы значительной частью программ чтения независимо от представления.
Модель содержания RSS 2.0 не допускает использования XML, что уменьшает возможности повторного использования содержимого.
В свою очередь, Atom имеет тщательно проработанный контейнер содержания, которое может быть следующих типов:
Atom не дает гарантии, что получатель будет иметь возможность сделать что-нибудь полезное с внешними данными или бинарным содержанием. Тем не менее, это ограждает получателей от неправильного определения типа содержимого на основе предположений.
RSS 2.0 имеет элемент <description>
(описание) который содержит или полный текст сообщения, или краткую сводку (иногда о всем канале), и который порой вообще отсутствует. Нет никакой возможности явно сообщить читателю, что текст является полным или частичным.
Atom представляет отдельные элементы <summary>
(резюме) и <content>
(содержимое). Элемент <summary>
позволяет описывать нетекстовое (например, audio-поток) или внешнее (идентифицируемое указателем) содержание.
RSS 2.0 представляет доступ только к документу целиком (элемент <rss>
).
Atom 1.0 разрешает доступ к автономным Atom Entry документам элемент <entry>
; которые могут передаваться по любым сетевым протоколам, например XMPP. Atom также имеет поддержку агрегированных каналов с обратной связью на исходный канал.
RSS 2.0 не является пространством имен XML, но может сам содержать элементы других пространств имен XML. Не существует единого центра, где можно было бы уточнить информацию о заимствованных элементах, таких как <dc:creator>
или <content:encoded>
.
Формат Atom 1.0 сам определен как пространство имен XML, и документ Atom может содержать элементы и атрибуты из других пространств имен. Для него определены рекомендации по интерпретации заимствованных элементов. В сетевом каталоге, управляемом IANA, имеются все описания и рекомендации по использованию расширений.
RSS 2.0 не описывает порядок обработки относительых ссылок (например, вида "img/fig1.gif"). Это ограничивает интероперабельность протокола и разработчикам приходится использовать абсолютные ссылки ("http://example.com/img/fig1.gif").
Atom 1.0 имеет поддерживает XML-атрибут <xml:base>
для указания базового адреса всех относительных ссылок в канале.
Для указания языка канала RSS 2.0 имеет собственный элемент <language>
, в то время как Atom использует XML-атрибут <xml:lang>
.
Каналы RSS 2.0 и Atom 1.0 могут быть подписаны или зашифрованы подобно любому другому веб-контенту, если представлены как битовая последовательность. В дополнение, Atom поддерживает стандарты XML Encryption и XML Digital Signature
RSS 2.0 позволяет указать раздельно электронные адреса менеджера канала (<managingEditor>), разработчика (<webMaster>) и автора каждого сообщения (<author>). Не многие указывают свой е-мейл, предпочитая использовать вместо этих тегов элемент <dc:creator> из пространства имен Dublin Core.
Atom 1.0 представляет элементы <author> (автор) и <contributor> (соавтор) как на уровне канала, так и на уровне отдельных сообщений. Эти элементы должны содержать имя автора и, опционально, могут содержать его е-мейл и веб-адрес
Категории в RSS 2.0 определяются двумя частями: меткой категории и доменом (адресом сервера), где эти категории описаны.
В стандарте Atom 1.0 категории представлены иерархически и каждая имеет опциональный человеко-читаемый заголовок.
Спецификация RSS 2.0 не использует схем.
Atom 1.0 включает поддержку ненормативного стандарта RelaxNG, это позволяет проверить валидность документов, заявленных как Atom 1.0. Другие форматы схем могут быть сгенерированы из исходной схемы RelaxNG.
Стандарт Atom 1.0 определяет 21 элемент канала новостей, RSS 2.0 — 30 элементов. Большинство элементов RSS 2.0 и Atom 1.0 не пересекаются и не соответствуют аналогам. Часть элементов редко используется на практике или их функциональность достигается другими путями.
RSS 2.0 | Atom 1.0 | Comments |
---|---|---|
rss | - | Рудимент из прежних версий RSS |
channel | feed | |
title | title | |
link | link | Atom представляет гибкие возможности для описания ссылок |
description | subtitle | |
language | - | Atom использует стандартный атрибут <xml:lang> |
copyright | rights | |
webMaster | - | |
managingEditor | author, contributor | |
pubDate | published (в элементе entry) | Atom не имеет эквивалента на уровне канала |
lastBuildDate (in channel) | updated | RSS не имеет эквивалента на уровне сообщения |
category | category | |
generator | generator | |
docs | - | |
cloud | - | RSS поддерживает спецификацию Cloud |
ttl | - | Использование ttl проблематично, связано с управлением кэшированием в протоколе HTTP 1.1 |
image | logo | В качестве логотипа Atom рекомендует изображения с отношением сторон 2:1 |
- | icon | По сути то же самое, что и favicon.ico |
rating | - | Популярность |
textInput | - | |
skipHours | - | |
skipDays | - | |
item | entry | |
author | author | |
- | contributor | |
description | summary и/или content | В зависимости от полноты содержание |
comments | - | |
enclosure | - | rel="enclosure" в элементе <link> стандарта Atom |
guid | id | |
source | - | rel="via" в элементе <link> стандарта Atom |
- | source | Контейнер метаданных уровня канала для поддержки агрегации |
По результатам анализа и сравнения можно сделать следующие выводы: