RSS (Really Simple Syndication) — это формат обмена информацией для Web.
RSS — это диалект XML, поэтому любые RSS документы должны соответствовать стандарту XML 1.0, опубликованному на официальном сайте W3C.
На верхнем уровне RSS-документа находится элемент <rss>, который содержит обязательный атрибут version, который, в свою очередь, указывает на версию документа. Если документ соответствует данной спецификации, то атрибут version должен быть равен 2.0.
На уровень ниже от элемента <rss> находится единожды встречающийся элемент <channel>, который содержит информацию о канале (метаданные) и о его содержании.
Обязательные элементы <channel>
Элемент
Описание
Пример
title
Название канала. Если у вас есть web-сайт, который содержит некоторую информации о канале, то имя канала, упомянутое на сайте, должно соответствовать имени, описанному в этом элементе.
Новости bikman.ru
link
URL web-сайта, соответствующего данному каналу.
http://bikman.ru/
description
Фраза или предложение, описывающее канал.
Последние новости сайта bikman.ru.
Необязательные элементы <channel>
Элемент
Описание
Пример
language
Язык канала. Список допустимых значений, которые приводит Netscape, находятся тут. Также можно пользоваться определенными W3C обозначениями.
en-us
copyright
Информация об авторских правах.
Copyright 2004, Dmitry Bikman.
managingEditor
E-mail адрес ответственного за содержание канала.
editor@channel.org (Василий Пупкин)
webMaster
E-mail адрес ответственного за техническую составляющую работы канала.
webmaster@channel.org (Василий Пупкин)
pubDate
Дата публикации контента канала, соответствующая RFC 822.
Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate
Дата и время последнего изменения контента канала, соответствующая RFC 822.
Sat, 07 Sep 2002 00:00:01 GMT
category
Одна или несколько категории, к которым принадлежит канал.
<category>Newspapers</category>
generator
Строка, описывающая программу, которая использовалась для создания канала.
MightyInHouse Content System v2.3
docs
URL спецификации RSS 2.0.
http://blogs.law.harvard.edu/tech/rss
cloud
Позволяет процессорам зарегистрироваться, используя cloud, и быть проинформированными об изменениях канала, используя легкий протокол публикации-подписки на RSS-фиды.
Устанавливает время жизни (time to live). Это число в минутах, которое показывает, насколько долго канал может быть кэширован без обновления из источника.
<ttl>60</ttl>
image
Определяет GIF, JPEG или PNG изображение, которое может быть ассоциировано с каналом.
Определяет поле текстового ввода, которое может быть ассоциировано с каналом.
---
skipHours
Подсказка процессорам, сообщающая, сколько часов они могут пропустить.
---
skipDays
Подсказка процессорам, сообщающая, сколько дней они могут пропустить.
---
<image>, вложенный элемент <channel>
<image> — это необязательный вложенный элемент <channel>, который содержит в себе три обязательных и три необязательных элемента.
<url> — это URL, указывающий на GIF, JPEG или PNG изображение, которое ассоциируется с каналом.
<title> описывает изображение. Используется в качестве атрибута alt тэга <img> при формировании HTML.
<link> — это URL, указывающий на web-сайт. При формировании HTML канала, изображение является ссылкой (необходимо принять во внимание, что <title> и <link> на практике должны быть равны элементам <title> и <link> в описании канала).
Опциональные элементы <width> и <height> определяют ширину и высоту изображения в пикселях. Необязательный элемент <description> содержит текст, который при формировании HTML должен содержаться в атрибуте title HTML тэга <a>, сформированного вокруг изображения.
Максимальное значение ширины изображения - 144. Значение по умолчанию - 88. Максимальное значение высоты изображения - 400. Значение по умолчанию - 31.
<cloud>, вложенный элемент <channel>
<cloud> — это необязательный вложенный элемент <channel>, который определяет web-службу, поддерживающую интерфейс rssCloud. Данный интерфейс может быть реализован с помощью протоколов HTTP-POST, XML-RPC или SOAP 1.1.
Его роль заключается в том, чтобы дать возможность процессорам RSS быть оповещенными об изменениях, произошедших с каналом, используя легкий протокол публикации-подписки на RSS-фиды.
В этом примере для запроса информации об изменениях канала нужно отправить XML-RPC сообщение на rpc.sys.com (порт 80), указав путь равным "/RPC2". Процедура, которую необходимо вызвать, называется myCloud.rssPleaseNotify.
Полное описание интерфейса rssCloud находиться здесь.
<ttl>, вложенный элемент <channel>
<ttl> — это необязательный вложенный элемент <channel>, указывающий время жизни (time to live). Это число в минутах, которое указывает, как долго канал можно кэшировать без обновления из первоисточника.
<ttl>60</ttl>
<textInput>, вложенный элемент <channel>
<textInput> — это необязательный вложенный элемент <channel>, который должен содержать 4 обязательных вложенных элемента.
<title> — Надпись на кнопке Submit текстового поля ввода.
<description> — Описание поля ввода текста.
<name> — Имя текстового поля ввода.
<link> — URL на CGI скрипт, который должен обрабатывать текст, введенный в поле ввода.
Элементы <item>
<channel> может содержать любое количество элементов <item>. Эти элементы могут содержать в себе публикации целиком, или же анонсы со ссылками на полные варианты публикаций. Все вложенные элементы являются необязательными, однако хотя бы один элемент <title> или <description> должен присутствовать.
Элемент
Описание
Пример
title
Заголовок.
Рождение RSS — это чудо!
description
Синопсис публикации (краткий обзор) или полный вариант публикации.
Текст, который должен описывать краткое содержание публикации или же текст публикации целиком. Это личное дело авторов канала.
author
E-mail адрес автора публикации.
author@channel.org (Василий Пупкин)
category
Категория или категории публикации.
Новости спорта
comments
URL страницы отзывов и комментариев данной публикации.
http://bikman.ru/comments/12345
enclosure
Описание медиа объекта, который прикреплен к публикации.
<source> — это необязательный вложенный элемент <item>.
Его значение — это имя RSS канала, которому принадлежит публикация. Он имеет один обязательный атрибут url, в котором указывается URL XML версии источника.
Роль данного элемента заключена в распространении информации об источнике публикации.
<enclosure>, вложенный элемент <item>
<enclosure> — это необязательный вложенный элемент <item>.
Данный элемент имеет три обязательных атрибута. Url указывает URL вложения, length указывает длину в байтах, type указывает стандартный MIME тип вложения.
<category> — это необязательный вложенный элемент <item>.
Этот элемент имеет единственный необязательный атрибут domain, который указывает на систематику классификации категории.
Значение элемента - это разделенная прямым слешем ("/") строка, которая описывает иерархическое положение в данной таксономии. Процессоры могут использовать эту информацию для устанавливания связей при интерпретировании категорий.
В элемент <item> можно включать любое количество элементов <category>, в том числе для разных доменов, а так же иметь различные пересечения в пределах одного домена.
<pubDate>, вложенный элемент <item>
<pubDate> — это необязательный вложенный элемент <item>.
Значение этого элемента — это дата публикации, соответствующая стандарту RFC 822. Если дата указывает на будущее время, то процессоры могут не отображать элемент до тех пор, пока дата не станет текущей или прошедшей.
<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
<guid>, вложенный элемент <item>
<guid> — это необязательный вложенный элемент <item>.
Значение элемента <guid> — это строка, однозначно определяющая публикацию. Например, данное значение может использоваться процессорами для определения новизны публикации.
<guid>http://bikman.ru/weblogItem3207</guid>
Не существует каких-либо определенных правил формирования значения <guid>. Обеспечение уникальности этой строки — задача канала.
Если элемент <guid> имеет атрибут isPermaLink, который равен true, процессор интерпретирует элемент <guid> как URL на публикацию, которая может быть открыта в web-браузере.
<author> — это необязательный вложенный элемент <item>.
Данный элемент указывает e-mail адрес автора публикации. Для газет и журналов, использующих RSS, автором является тот, кто написал публикацию, описанную в элементе . Для общих блогов, авторы могут быть различными. Для личных блогов, имеет смысл пропускать данный элемент.
<author>author@channel.org (Вася Пупкин)</author>
Комментарии
RSS накладывает ограничение на использование первых непробельных символов в элементах <link> и <url>. Данные, содержащиеся в этих элементах, должны соответствовать стандарту URI IANA (http://, https://, news://, mailto: и ftp://). Предшествующие RSS 2.0 спецификации допускали использование только http:// и ftp:// схем, однако на практике другие URI схемы использовались авторами контента и каналов, а так же поддерживались процессорами. Стоит учитывать, что обработчики могут иметь ограничения на возможные URI схемы. Авторам не следует полагаться на полную поддержку URI схем со стороны процессоров RSS.
В спецификации RSS 0.91 длина данных элементов была ограниченна 500 или 100 символами. В элементе <channel> не могло содержаться более 15 элементов <item>. Начиная с версии 0.92, все ограничения на длину и вложенность XML элементов были сняты. Обработчики и генераторы RSS могут устанавливать собственные ограничения на количество элементов <item> и ограничения строк по длине.
В RSS 2.0 ставка сделана на связывание канала с его идентификатором в некотором катологе, широко используя систему категорий и иерархий. Например, для того, чтобы связать канал с идентификатором Syndic8, достаточно включить элемент <category> в качестве вложенного элемента <channel>, с атрибутом domain равным "Syndic8", и указать значение идентификатор/а для канала Syndic8 в базе данных.
<category domain="Syndic8">1765</category>
Часто задаваемый вопрос, как связаны значения элементов <guid> и <link>. Не одно и тоже ли это? Действительно, в некоторых системах управления контентом это так. В некоторых других системах <link> - это ссылка на первоисточник. Т.к. в некоторых системах несет в себе краткое описание больших публикаций, <link> указывает на саму публикацию, а <guid> — это ссылка на краткое описание в блоге. В любом случае, рекомендуется использовать <guid>, являющийся уникальной ссылкой на первоисточник, если это возможно. Это позволяет процессорам отслеживать уникальность новых публикаций и не повторяться.
Если у вас имеются вопросы по формату RSS 2.0, задавайте их в списке рассылки RSS2-Support.
Расширение RSS
RSS основан в 1999 году, и он должен был быть прозрачным для понимания форматом, со скоромными показаниями к применению. После того, как RSS превратился в популярный формат, разработчики стремятся расширить его, используя различные модули, определенные в различных пространствах имен (согласно спецификации W3C).
RSS позволяет расширять себя новыми возможностями. Для этого достаточно соблюдать простое правило. RSS канал может содержать элементы, отличные от описанных в данной спецификации, только в том случае, если эти элементы определены в пространстве имен.
Элементы, определенные в данной спецификации, сами не являются членами какого-либо пространства имен. Так что RSS 2.0 может оставаться совместимым с предыдущими версиями в таком смысле — версии 0.91 и 0.92 так же являются корректными с точки зрения RSS 2.0 спецификации. Если бы элементы RSS 2.0 были бы членами какого-либо пространства имен, то обратная совместимость была бы нарушена.
Заключение
Несомненно, RSS — это отличный формат, он крайне популярен и широко распространен. Наличие устоявшейся концепции — это то, в чем RSS нуждался длительное время. Смысл данной работы — помочь формату стать неизменным, чтобы стимулировать рост среды, формирующейся вокруг RSS, а так же расчистить путь для появления инноваций в форматах обмена информацией. Поэтому спецификация заморожена на версии 2.0.1. Возможные версии 2.0.2, 2.0.3 и т.п. ожидаются только для пояснения, но никак не для добавления новых возможностей. Последующая работа должна происходить на уровне дополнительных модулей, которые используют пространства имен, и на уровне совершенно новых форматов обмена информации.
Лицензии и авторство
Спецификация RSS 2.0 предложена Berkman Center for Internet & Society at Harvard Law School под лицензией Attribution/Share Alike Creative Commons license. Автором данного документа является Dave Winer, основатель UserLand Software и просто парень из Berkman Center.
Знаете ли Вы, что релятивистское объяснение феномену CMB (космическому микроволновому излучению) придумал человек выдающейся фантазии Иосиф Шкловский (помните книжку миллионного тиража "Вселенная, жизнь, разум"?). Он выдвинул совершенно абсурдную идею, заключавшуюся в том, что это есть "реликтовое" излучение, оставшееся после "Большого Взрыва", то есть от момента "рождения" Вселенной. Хотя из простой логики следует, что Вселенная есть всё, а значит, у нее нет ни начала, ни конца... Подробнее читайте в FAQ по эфирной физике.