От версии к версии семейство XML-форматов, предназначенных для описания новостных лент, имело одну и ту же аббревиатуру, но разную расшифровку. По данным "Википедии", расшифровка аббревиатуры прошла изменении от Rich Site Summary (RSS 0.9x) — обогащенная сводка сайта; через RDF Site Summary (RSS 0.9 и 1.0) — сводка сайта с применением инфраструктуры описания ресурсов; до Really Simple Syndication (RSS 2.x) — очень простое приобретение информации. Действительно ли использование RSS обеспечивает простоту доступа к информации, удобство использования, попробуем разобраться в этой статье.
Первое, что хотелось бы отметить по поводу удобства RSS-лент (их также называют RSS-каналами, RSS-фидами), — их компактность. Как правило, в таких лентах публикуются не сами новости, а их анонсы. Это уменьшает трафик и время, необходимое для просмотра и отбора интересующих новостей, которые хотелось бы прочитать целиком. (Все, что будет говориться по поводу новостей, в полной мере относится и к публикациям в блогах и на сайтах.)
Основоположником формата RSS стала компания Netscape, приступившая к его разработке еще в 1997 году. Первое применение этот формат нашел при наполнении информацией каналов портала Netcenter. Формат пришелся по вкусу и другим, и вскоре многие ведущие порталы, такие как BBC, CNET, CNN, ZDNet и многие другие, также стали его использовать. Спецификация последней версии RSS появилась в 2003 году, а тремя годами позже был разработан конкурент RSS — формат Atom.
Сегодня существует семь подвидов стандарта — от RSS 0.90 до RSS 2.0. Можно отметить, что многие разработчики в большей степени склоняются к использованию стандарта RSS 2.0 как наиболее развитого. Этот стандарт позволяет прикреплять к сообщениям дополнительную информацию, в том числе и мультимедийную. Наиболее полный сравнительный анализ версий можно прочитать в статье "Что такое RSS" (автор Mark Pilgrim), а стандарт RSS 2.0 опубликован на сайте Technology at Harvard Law.
Любой материал, который можно разделить на отдельные части, можно публиковать с помощью RSS: например, объявления о последних публикациях в "Википедии", информацию об обновлениях в CVS, историю изменений, внесенных в книгу. После того как информация преобразована в формат RSS, программа, понимающая этот формат, может вытягивать сведения о внесенных изменениях и, в зависимости от результата, предпринимать какие-либо действия. Таким образом, если на сайте размещена ссылка на RSS-ленту, она будет доступна для любой программы или агрегатора, с помощью которых ее можно просматривать.

Тем, кто знаком с XML, понять формат рассылки будет не сложно. Фид строится из предопределенных строительных элементов — тегов, располагаемых в опять же предопределенной последовательности. Когда RSS-файл создается компанией, в него обычно заносится следующая информация:
- название компании, создавшей RSS-файл;
- дата и время создания файла;
- темы новостей;
- адрес баннера сайта;
- заголовки (анонсы) новостей;
- дата и время новостей;
- краткое изложение новостей;
- HTML-адреса до полных текстов новостей (обычно адреса ведут на страницы сайта, создавшего RSS-файл);
- HTML-адреса до рисунков, используемых в анонсах новостей.
Рассмотрим, как эта информация представлена в ленте, например, "Яндекс.Новостей".
<?xml version="1.0" encoding="windows-1251" ?>
<rss xmlns:yandex="http://news.yandex.ru" version="2.0">
<channel>
<title>"Яндекс.Новости": Интернет</title>
<link>http://news.yandex.ru/Russia/internet.html</link>
<description>Первая в России служба автоматической обработки и систематизации новостей. Сообщения ведущих российских и мировых СМИ. Обновление в режиме реального времени 24 часа в сутки.</description>
<image>
<url>http://company.yandex.ru/i/50x23.gif</url>
<link>http://news.yandex.ru</link>
<title>"Яндекс.Новости"</title>
</image>
<lastBuildDate>Tue, 20 Feb 2007 23:25:00 +0300</lastBuildDate>
<item>
<title>Компенсация за порно - $5 млн</title>
<link>http://news.yandex.ru/yandsearch?cl4url=bybanner.com/article/4181.html&country=Russia</link>
<description>Именно столько требует в суде от компании IBM бывший сотрудник, уволенный в 2003 году за посещение порночатов.
58-летний Джеймс Пьяченца (James Pacenza) из города Монтгомери утверждает, что увлечение порно помогало ему справиться с тяжелым стрессом, вызванным гибелью на его глазах...</description>
<pubDate>Tue, 20 Feb 2007 17:30:17 +0300</pubDate>
<guid>http://news.yandex.ru/yandsearch?cl4url=bybanner.com/article/4181.html&country=Russia</guid>
</item>
</channel>
</rss>
Первые две строки — служебные. В одной описывается стандарт XML, во второй — стандарт RSS, используемые для создания фида. Кроме того, в описании версии RSS указаны источники пространства имен, применяемые в данном стандарте. Больше в фиде никакой служебной информации нет, все остальное относится непосредственно к рассылке.
В стандарте 2.0 (именно этот формат используется на "Яндексе") вся рассылка обрамляется тегом channel, а сами новости вложены внутрь этого тега. (В версии 1.0 новости не входят в состав тега channel.)
В описании фида — три обязательных параметра:
- title — название канала либо название ресурса. По нему будут ссылаться на ресурс;
- link — ссылка на источник, соответствующий данному каналу;
- description — краткое описание канала.
Кроме обязательных в состав описания могут входить и необязательные элементы. К ним относятся:
- language — язык, на котором вы пишете свои новости;
- copyright — авторские права, ваши, но — на английском;
- managingEditor — электронный адрес издателя;
- webMaster — электронный адрес веб-мастера;
- pubDate — дата публикации. Требование к формату описано в RFC 822;
- generator — может использоваться, если канал формируется с помощью какой-либо программы;
- image — описывает картинку, которая может показываться агрегаторами для данного канала. Формат изображения — GIF, JPEG или PNG. В свою очередь, состоит также из нескольких тегов, описывающих ссылку на картинку, ее описание и некоторые иные параметры;
- skipHours и skipDays предназначены для агрегаторов. В этих тегах указывается, в какое время и в какие дни "появление" агрегаторов нежелательно.
Есть еще ряд тегов, которые могут использоваться в описании заголовка канала, но они применяются довольно редко и поэтому о них лучше прочитать в описании стандарта. Следующий блок канала — сами сообщения. Каждое сообщение обрамляется элементом item. Все остальные элементы, относящиеся к новости, содержатся внутри него.

Элементов item в вашем фиде будет столько, сколько новостей вы будете в нем размещать. Все элементы, входящие в item, являются необязательными, тем не менее желательно, чтобы присутствовал хотя бы один элемент title или description. Итак, какие элементы могут включаться в описание новости?
Как только что говорилось, в состав описания новости могут включаться элементы:
- title — заголовок записи;
- link — ссылка на запись;
- description — аннотация либо полная публикация;
- category — описывает категорию, к которой можно отнести новость;
- pubDate — дата публикации документа. Может содержать будущую дату по отношению к текущей. В этом случае агрегаторы должны такую новость пропускать.
Как видите, ничего особенно сложного в этом нет. Если вы делаете RSS-файл вручную, вам остается добавлять в него очередные новости, удаляя, по мере необходимости, старые. Добавлять новости лучше в начало файла, тогда это действительно будет похоже на ленту новостей, в которой свежие новости постепенно вытесняют старые.
Но новости, а тем более новостные каналы пишутся в первую очередь для посетителей (и почитателей) вашего проекта. Следовательно, нужно дать им возможность подписаться на ваши новости, для чего на странице новостей (хотя можно и на другой — главное, чтобы было заметно) нужно разместить специальные кнопки, но могут быть и прямые ссылки на фиды. При этом в качестве протокола чаще всего используется специально разработанный протокол — feed.
Почему не используется обычный HTTP-протокол? На это есть две причины: протокол HTTP не может определять действия, а также не умеет запускать через ваш браузер программу-агрегатор для осуществления подписки. Протокол feed вызывается поверх иных сетевых протоколов — HTTP, FTP и ссылок на локальные файлы.
Примеры записи протокола:
- feed://http://example.org/rss.xml
- feed:http://example.org/rss.xml
- feed:example.org/rss.xml
- feed://ftp://user:password@ftp.host.com/path/index.xml
- feed://file://\\server\share\index.xml
Но можно не ограничиться размещением кнопки или меню на своем сайте. Вы можете включить свою рассылку в список, формируемый некоторыми специальными проектами — службами синдикации, такими как "Яндекс.Лента" или Google Reader, или воспользоваться специальными программами для чтения RSS-лент. Многие современные браузеры также имеют механизм для чтения RSS-лент, то есть вам может даже не потребоваться специальная программа. Исключение составляет, пожалуй, тот случай, когда вы хотите хранить архив новостей, публикуемых через RSS-ленты.