RSS — основанный на XML формат описания лент новостей, анонсов статей, изменений в блогах и форумах и т. п.
В разных версиях аббревиатура RSS имела разные расшифровки:
Подробную историю спецификации RSS можно посмотреть на официальных сайтах RSS Advisory Board и RSS-DEV Working Group (RSS 1.0). Здесь приведем лишь хронологию появления версий RSS и их особенности.
RSS time-line
* — текущая версия на момент написания этой страницы
Исторически, разработкой формата занимались по меньшей мере четыре различные организации, в результате сложилась такая ситуация, что различные версии формата слабо совместимы, а то и совсем не совместимы, между собой. Однако это не мешает им уживаться, благодаря тому, что популярные программы-агрегаторы, как правило, понимают несколько форматов.
Особенности версий RSS
Версия | Владелец | Краткая характеристика | Статус | Советы |
---|---|---|---|---|
0.90 | Netscape | Сложный | Отменен версией 1.0 | Устарел |
0.91 | UserLand | Очень простой | Отменен с выходом версии 2.0., но все еще популярен | Рекомендован для простых публикаций, совместим с RSS 2.0 |
0.92, 0.93, 0.94 | UserLand | Расширены по сравнению с 0.91 | Отменены с выходом версии 2.0 | Рекомендуется использовать 2.0 |
1.0 | RSS-DEV Working Group | Основан RDF и пространствах имен (namespaces). Открытая и расширяемая модульная архитектура (стандартные модули: Dublin Core, Syndication, Content). | Стабилен. Ведется активная разработка модулей. | Подходит для приложений на основе RDF, либо если требуется функциональность определенного модуля |
2.0 | UserLand | Расширяется с помощью модулей. Совместим с форматами 0.9х | Стабилен. Ведется активная разработка модулей | Широко распространен и используется для публикации новостей общего назначения |
В листингах 1, 2 и 3 приведены примеры описания лент новостей различных версий RSS.
Листинг 1. Лента новостей RSS 0.91
<RSS version="0.91"> <channel> <title>Учебные материалы для студентов</title> <link>http://www.4stud.info/</link> <description>Лента новостей сайта 4stud.info</description> <language>ru-ru</language> <item> <title>Сетевые технологии: СРС</title> <link>http://www.4stud.info/networking/srs.html</link> <description>Новые варианты заданий повышенной сложности для самостоятельной работы студентов.</description> </item> <item> <title>Веб-программирование: Практикум</title> <link>http://www.4stud.info/web-programming/css-samples.html</link> <description>Семь примеров использования каскадных таблиц стилей</description> </item> <item> <title>Сетевые технологии: Лекции </title> <link>http://www.4stud.info/networking/lecture-06.html</link> <description>Исправлена схема ППО типа transaction monitor.</description> </item> </channel> </rss>
Листинг 2. Лента новостей RSS 1.0
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel rdf:about="http://www.4stud.info/about.html"> <title>Учебные материалы для студентов</title> <link>http://www.4stud.info/</link> <description>Лента новостей сайта 4stud.info</description> <language>ru-ru</language> <items> <rdf:Seq> <rdf:li rdf:resource="http://www.4stud.info/networking/srs.html"/> <rdf:li rdf:resource="http://www.4stud.info/web-programming/css-samples.html"/> <rdf:li rdf:resource="http://www.4stud.info/networking/lecture-06.html"/> </rdf:Seq> </items> </channel> <item rdf:about="http://www.4stud.info/networking/srs.html"> <title>Сетевые технологии: СРС</title> <link>http20://www.4stud.info/networking/srs.html</link> <description>Новые варианты заданий повышенной сложности для самостоятельной работы студентов.</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> <item rdf:about="http://www.4stud.info/web-programming/css-samples.html"> <title>Веб-программирование: Практикум</title> <link>http://www.4stud.info/web-programming/css-samples.html</link> <description>Семь примеров использования каскадных таблиц стилей</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> <item rdf:about="http://www.4stud.info/networking/lecture-06.html"> <title>Сетевые технологии: Лекции</title> <link>http://www.4stud.info/networking/lecture-06.html</link> <description>Исправлена схема ППО типа transaction monitor.</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> </rdf:RDF>
Листинг 3. Лента новостей RSS 2.0
<RSS version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> <title>Учебные материалы для студентов</title> <link>http://www.4stud.info/</link> <description>Лента новостей сайта 4stud.info</description> <language>ru-ru</language> <item> <title>Сетевые технологии: СРС</title> <link>http://www.4stud.info/networking/srs.html</link> <description>Новые варианты заданий повышенной сложности для самостоятельной работы студентов.</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> <item> <title>Веб-программирование: Практикум</title> <link>http://www.4stud.info/web-programming/css-samples.html</link> <description>Семь примеров использования каскадных таблиц стилей.</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> <item> <title>Сетевые технологии: Лекции</title> <link>http://www.4stud.info/networking/lecture-06.html</link> <description>Исправлена схема ППО типа transaction monitor.</description> <dc:creator>aag</dc:creator> <dc:date>2009-10-04</dc:date> </item> </channel> </rss>
Как видно из приведенных примеров, формат RSS 1.0 существенно отличается от версий 0.91 и 2.0. Он ближе к общей структуре новостных каналов, представляет более полное описание, но, при этом и более многословен. Это повышает сложность алгоритма разбора программы-агрегатора. RSS 0.91 и RSS 2.0 представляют более простое, компактное и наглядное описание канала. Синтаксис и назначение основных элементов в этих версиях сходный, следовательно без особых трудностей можно перейти с версии 0.91 на 2.0, обеспечив такую же функциональность, как у RSS 1.0. В силу этого далее будем рассматривать спецификацию RSS 2.0.
RSS — диалект XML, поэтому описание канала RSS обязано соответствовать спецификации XML
Корневым элементом документа RSS является элемент <rss>
с обязательным атрибутом version
, указывающим версию формата канала. Для формата RSS 2.0 значение этого атрибута должно быть 2.0
. Единственный дочерний элемент первого уровня, <channel>
, включает метаинформацию о канале (описание канала новостей) и его содержимое &mdash обязательные и необязательные дочерние элементы разной вложенности. Элементы могут содержать обязательные и необязательные атрибуты, определяющие свойства и поведение элемента.
На сайте разработчика приводится подробное описание элементов RSS 2.0, здесь рассмотрим только некоторые из них.
Элемент <channel>
определяет канал как таковой и содержит всю информацию. Сравните с RSS 1.0, где этот элемент описывает метаинформацию.
Обязательные элементы канала
title
— Название канала, по которому люди будут ссылаться на сервис. Если канал связан с веб-сайтом, то значение title
должно совпадать с заголовком стартовой страницы сайта.link
— URL веб-сайта, связанного с каналом.description
— Краткое описание канала.Необязательные элементы канала
language
— Язык канала, как определено W3C.pubDate
— Дата публикации канала как определено в спецификации RFC 822.lastBuildDate
— Время последнего изменения содержимого канала.category
— Указывает одну и более категорию, к которой относится каналttl
— Время жизни: количество минут, на которые канал может кешироваться перед обновлением с ресурса.image
— Изображение GIF, JPEG или PNG, которое может отображаться с каналом. Например, логотип компании.Атрибуты элементов
В качестве примера элемента с атрибутами рассмотрим <image>
. Это — дочерний элемент <channel>
, содержащий три обязательных и три дополнительных элемента:
url
— URL изображения GIF, JPEG или PNG, представляющего каналtitle
— Название изображения, которое будет использовано в атрибуте alt
при отображении канала в виде гипертекста.link
— URL сайта; изображение канала будет служить ссылкой на этот сайт.width, height
— Необязательные атрибуты, задающие ширину и высоту изображения в пикселях. Максимальные размеры изображения — 144 х 400px, по умолчанию — 88 x 31px. Например:
<image url="http://4stud.info/img/logo.gif" title="Учебные материалы для студентов АСОИУ" link="http://4stud.info" width="200px" height="60px" />
description
— Необязательное описание изображения.Детальное описание атрибутов прочих элементов доступно на сайте разработчиков. Здесь же подробно рассмотрим элемент <item>
.
Канал может содержать любое количество элементов <item>
, описывающих отслеживаемую информацию. Каждый <item>
может содержать (или не содержать, в зависимости от используемых дочерних элементов) заголовок сообщения, его содержание (краткое или полное), ссылку на источник, информацию об авторе и др. Все дочерние элементы <item>
являются необязательными, однако по крайней мере <title>
или <description>
должен существовать. Перечислим некоторые элементы <item>:
Дочерние элементы <item>
title
— Заголовок сообщения.link
— URL сообщения.description
— Краткий обзор сообщения.author
— Адрес электронной почты автора сообщения.category
— Включает сообщение в одну или более категорий.enclosure
— Описывает медиа-объект, прикрепленный к сообщению, например:
<enclosure url="http://www.example.com/mp3/hello.mp3" length="12216320" type="audio/mpeg" />
pubDate
— Показывает, когда сообщение было опубликовано.Полный список и подробное описание см. на сайте RSS Advisory Board. В спецификации формата приведены пояснения и рекомендации по использованию каждого из дочерних элементов <item>
. Так, например, элемент <author>
, который указывает адрес электронной почты автора сообщения, следует использовать, если авторов несколько. Если же автор всех сообщений единственный, то <author>
в <item>
лучше опустить.
Согласно спецификации, версия 2.0 поддерживает следующие схемы в элементах <link> и <url>
: http://
, https://
, news://
, mailto:
и ftp://
. В предыдущих версиях поддерживались только http://
и ftp://
.
В RSS 0.91 различные элементы ограничивались до 500 или 100 символов. Кроме того, в <channel>
не могло быть более 15 сообщений <item>
. Ограничения на длины строк отсутствуют, начиная с RSS 0.92. Агрегаторы могут налагать свои ограничения по чтению, а генераторы могут иметь опции, ограничивающие количество <item>
в канале, либо длины строк.
Заявленная в спецификации, но редко используемая возможность RSS 2.0 - отправка данных из ленты. Для этого стандарт представляет специальный элемент — <textInput>, атрибуты которого определяют текст отправляемого сообщения, адрес скрипта-обработчика, надпись на кнопке Submit, заголовок.
Расширение функциональности реализовано через поддержку модулей, определенных в пространствах имен XML. Канал RSS 2.0 может содержать элементы и атрибуты, не объявленные в спецификации, только если они определены в пространствах имен. В листинге 3 использована эта возможность — подключено пространство имен <xmlns:dc>
:
<RSS version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
Элементы <dc:creator>
и <dc:date>
в этом примере являются заимствованными.
RSS не является идеальным решением, но он широко распространен и стал, по сути, «народным» форматом. Версия 2.0 стабилизировала ситуацию со спецификациями каналов новостей и дальнейшее развитие RSS разработчики формата видят не в добавлении новых возможностей, а в совершенствовании имеющихся. Последующую работу они связывают с модулями, использующими пространства имен и с разработкой совершенно иных форматов с другими названиями.