RSS Logo.

Ярко-рыжий логотип, который можно увидеть на практически любом сайте, наверняка не раз привлекал Ваше внимание. Если Ваше любопытство хоть раз заставляло Вас перейти по ссылке, которая чаще всего стоит за таким логотипом, то Вы наверняка уже успели представить себе о чем пойдет речь.

Такая ссылка в подавляющем большинстве случаев ведет на новости сайта, на котором она расположена, представленные в формате представления данных под названием RSS (хотя это даже не обязательно должны быть новости в обычном понимании этого слова, с помощью этого формата можно публиковать любой контент). Этот формат предоставляет пользователям возможность подписываться на каналы новостей с помощью специально предназначенных для этого программ - аггрегаторов, позволяя иметь быстрый и удобный доступ ко всем интересующим его/ее информационным ресурсам, без необходимости собственно посещать все эти сайты.

О процессе создания такого канала я и хочу Вам рассказать.

Конечно же многие CMS поддерживают автоматическую генерацию RSS-каналов, и WordPress, на которой работает этот блог, к ним относится. RSS-канал этого блога, хоть и не является новостным по сути, но также прекрасно генерируется из постов блога. Но для того, чтобы работать с технологией обычно бывает не лишним понимать как она работает, по-этому в этой записи я поведаю Вам о ручном составлении RSS-канала, а в одной из последующих - об автоматической генерации.

Прежде всего стоит сказать, что RSS является методом, основанным на XML и предназначенным для оперативного распространения новостей и контента сайта как среди потенциальных читателей, так и среди других сайтов.

Как следствие, на RSS распространяются все правила написания XML-документов, с которыми имеет смысл ознакомиться перед тем, как продолжить чтение этой записи. Помимо них, для RSS существует отдельный стандарт и соответственно набор не менее простых правил.

В качестве примера можно использовать любой понравившийся канал, например мой. Для того, чтобы увидеть сам текст документа, необходимо нажать правой кнопкой мыши на открытый в браузере документ и выбрать пункт, называющийся как-нибудь вроде "Просмотр исходного кода страницы" или "View Page Source".

По сравнению с XML, RSS-документ должен обладать четко определенной структурой:

  1. За стандартным XML-заголовком открывается корневой элемент <rss>, содержащий указание версии RSS
  2. В корневой элементе должен должен содержаться ровно один элемент <channel>, символизирующий наш канал
  3. Внутри <channel> обязательно должны содержаться три элемента:

    • <title> - заголовок канала
    • <link> - ссылка на сам сайт
    • <description> - описание канала
  4. Помимо них он должен содержать один или несколько элементов <item>, которые будут обозначать одну конкретную новость, запись, пост, статью, заметку, не важно какое из этих слов больше подходит к каждому конкретному случаю - суть от этого не меняется.

  5. Элементы между парой тэгов <item>, как ни странно, тоже должны в себя включать в себя волшебно-обязательные элементы, разница лишь в значении, которое им придается:
    • <title> - заголовок новости-записи-поста-статьи-заметки
    • <link> - ссылка на нее же, обычно на страницу внутри сайта
    • <description> - собственно говоря сам текст

Пример:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
 <title>Insight IT</title>
 <description>Блог об информационных технологиях</description>
 <link>https://www.insight-it.ru</link>
 <lastBuildDate>Sun, 07 Jan 2008 23:42:01 +0000</lastBuildDate>
 <pubDate>Sun, 07 Jan 2008 23:42:01 +0000</pubDate>
 <ttl>1800</ttl>

 <item>
  <title>Мы делаем новости!</title>
  <description>Ярко-рыжий логотип, который можно увидеть на практически любом сайте, наверняка не раз привлекал Ваше внимание.</description>
  <link>http://www.insight-it.ru/?p=18</link>
  <guid isPermaLink="true">7bd204c6-1655-4c27-aeee-53f933c5395f</guid>
  <pubDate>Sun, 07 Jan 2008 23:42:01 +0000</pubDate>
 </item>

</channel>
</rss>

Перечисленного выше вполне достаточно для написания простейшего RSS-канала, но возможности RSS далеко выходят за рамки просто размещения в Сети текстовых сообщений. Для их реализации стандартом предусмотрен еще целый ряд тэгов,  доступных для использования. Позволю себе привести краткую справку по основным из них (для полноты картины повторю обязательные):

Дочерние элементы

ЭлементОписание
<category>Не обязателен, определяет одну или несколько категорий для канала, позволяет аггрегаторам группировать записи по этому параметру
<cloud>Не обязателен, используется для осуществления об обновлении канала с помощью технологии RPC
<copyright>Опционально, предназначен для предупреждения о необходимости соблюдения авторских прав
<description>Обязательное описание канала
<docs>Необязательная ссылка на описания формата, использованного в данном канале
<generator>Указание программы, сгенерировавшей канал, обычно они сами заполняют этот тэг. В случае заполнения вручную он вообще не нужен
<image>Опциональное отображение логотипа канала в аггрегаторе
<language>Определяет язык, на котором написано содержимое канала. Не обязательно, но желательно
<lastBuildDate>Время последнего обновления содержимого канала. Опционально.
<link>Обязательная ссылка канала
<managingEditor>Адрес электронной почты редактора канала, не обязателен.
<pubDate>Опциональная дата последней публикации на канале
<rating>Опциональный PICS рейтинг канала
<skipDays>Количество дней, которые аггрегатор должен пропускать между проверкой обновлений канала
<skipHours>По аналогии с предыдущим, только в часах
<textInput>Определяет текстовое поле, которое может отображаться рядом с каналом. Не обязательно.
<title>Обязательная тема канала
<ttl>Время в минутах, в течении которого канал может отображаться из кэша аггрегатора
<webMaster>Адрес электронной почты веб-мастера, не обязательно.

Дочерние элементы

ЭлементОписание
<author>Название говорит само за себя - автор, указывать не обязательно
<category>Категория или категории, куда можно отнести запись. Опционально
<comments>Ссылка на комментарии к записи. Опционально.
<description>Обязательное описние записи, то есть само ее содержание
<enclosure>Существует возможность по желанию сопровождать запись ссылкой на меда-файл так или иначе с ней связанный
<guid>Уникальный идентификатор элемента
<link>Обязательная ссылка записи
<pubDate>Дата публкации. Не обязательно.
<source>Опциональная ссылка на внешний источник записи
<title>Обязательный заголовок записи

Более подробно о каждом из них можно узнать, ознакомившись со спецификацией на английском. Напоследок хочу напомнить, что вся эта запись представлена лишь для общего понимания принципов организации RSS-документа. На практике в большинстве случаев такие документы генерируются автоматически, о чем и пойдет речь в одной из последующих записей.

07 января 2008 |  Иван Блинков  |  Теория