Этот текст является неофициальным вольным переводом стандарта и не имеет той же силы, что и оригинал.
Это – версия 2.0.9 спецификации RSS, опубликованной 5 июня 2007 года RSS Advisory Board. Последняя версия будет всегда доступна по адресу http://www.rssboard.org/rss-specification, также доступен список изменений и других версий.
RSS – формат передачи веб-контента. Название технологии – акроним «Really Simple Syndication», то есть, «по-настоящему простая передача информации». Сводную историю формата можно найти по адресу http://www.rssboard.org/rss-history.
RSS – диалект XML. Все файлы RSS обязаны соответствовать спецификации XML 1.0, опубликованной на веб-сайте консорциума WWW (W3C).
На высшем уровне документ RSS представляет собой элемент <rss>
с обязательным атрибутом version
, указывающим версию RSS. Если документ соответствует этой спецификации, значение этого атрибута должно быть «2.0
». Дочерний элемент <rss>
– один элемент <channel>
, который включает информацию о канале (метаданные) и его содержимое.
С сайта RSS Board доступны примеры файлов для RSS 0.91, 0.92 и 2.0.
Отметим, что примеры файлов могут указывать на документы и сервисы, которые более не существуют.
Этот документ представляет статус RSS на конец 2002 года – версию 2.0.1.
Описаны все изменения и добавления, начиная с основной спецификации RSS 0.91 (июнь 2000 г.), и новые возможности, появившиеся в RSS 0.92 (декабрь 2000 г.) и RSS 0.94 (август 2002 г.).
Заметки об изменениях можно найти по адресу http://www.rssboard.org/rss-change-notes.
Для начала мы опишем обязательные и необязательные дочерние элементы <channel>
, далее – дочерние элементы <item>
.
Завершающие разделы отвечают на распространенные вопросы, рассказывают о
планах на последующие версии и дают рекомендации по расширению RSS.
title
title
канала должен совпадать с title
заглавной веб-страницы.link
description
language
copyright
managingEditor
webMaster
pubDate
pubDate
канала. Дата и время в RSS соответствуют спецификации RFC 822, за исключением того, что год может представляться двумя или четырьмя цифрами (последнее предпочтительно).lastBuildDate
category
<item>
.generator
docs
cloud
ttl
image
rating
textInput
skipHours
skipDays
<image>
<image>
– дочерний элемент <channel>
, содержащий три обязательных и три дополнительных элемента.
<url>
<title>
alt
элемента HTML img
, когда канал будет показан в гипертексте.<link>
<title>
и <link>
изображения должны совпадать с <title>
и <link>
канала.Необязательные элементы – <width>
и <height>
, задающие ширину и высоту изображения в пикселях. <description>
содержит текст, включаемый в атрибут title
ссылки, сформированной вокруг изображения в HTML-отображении.
Максимальная ширина – 144, по умолчанию – 88.
Максимальная высота – 400, по умолчанию – 31.
<cloud>
<cloud>
указывает веб-сервис, поддерживающий
интерфейс rssCloud, который может реализовываться через HTTP-POST,
XML-RPC или SOAP 1.1 и реализует подписку на обновления канала.
<cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />
В этом примере для запроса уведомления нужно отправить сообщение XML-RPC на rpc.sys.com, порт 80, путь /RPC2. Вызываемая процедура – myCloud.rssPleaseNotify.
Полное объяснение этого элемента и интерфейса rssCloud: http://www.rssboard.org/rsscloud-interface.
<ttl>
ttl
указывает количество минут, на которые канал может
кешироваться до следующего обновления из источника. Это позволяет
ресурсам RSS управляться сетями файлообмена вроде Gnutella.
Пример:
<ttl>60</ttl>
<textInput>
Элемент канала может содержать необязательный элемент <textInput>
, в свою очередь состоящий из четырех обязательных элементов.
<title>
<description>
<name>
<link>
Назначение элемента <textInput>
загадочно; его
можно использовать, чтобы вставить строку поиска или читательских
отзывов, но большинство сборщиков его игнорируют.
<item>
Канал может содержать любое количество статей, элементов <item>
. Статья во многом похожа на публикацию в газете или журнале, <description>
– это ее краткое изложение, а <link>
указывает на полный текст. Статья может быть самодостаточной, в таком случае <description>
содержит текст (можно использовать экранированную сущностями HTML-разметку, см. примеры), а ссылка (<link>
) и заголовок (<title>
) могут опускаться. Все элементы <item>
являются необязательными, однако по крайней мере <title>
или <description>
должен существовать.
title
link
description
author
category
comments
enclosure
guid
pubDate
source
<source>
<source>
содержит название канала-источника сообщения, полученное из его <title>
. Имеет обязательный атрибут URL, ссылку на источник.
<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>
Этот элемент должен передавать источники ссылок и новостей. Может использоваться в команде отправки сообщений в канал и должен автоматически генерироваться, когда сообщение пересылается от сборщика к средству редактирования блога.
<enclosure>
Имеет три обязательных атрибута
url
length
type
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />
Пример использования элемента: http://www.thetwowayweb.com/payloadsforrss.
<category>
Необязательный атрибут <category>
domain
указывает на ресурс с классификацией.
Значение элемента – разделенная прямыми слэшами строка, определяющая иерархическое положение в указанной классификации. Процессоры могут устанавливать соглашения по интерпретации категорий.
<category>Grateful Dead</category>
<category domain="http://www.fool.com/cusips">MSFT</category>
Допускается произвольное число элементов для различных доменов и перекрестные ссылки в различных частях одного домена.
<pubDate>
Дата, задающая, когда сообщение было опубликовано. Если дата относится к будущему, то сообщение может не показываться до ее наступления.
<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
<guid>
guid
– уникальный на уровне канала строковый
идентификатор статьи. Сборщик может использовать идентификаторы для
выявления новых статей.
<guid>http://some.server.com/weblogItem3207</guid>
Синтаксис guid
не определен.
Если для guid
необязательный атрибут isPermaLink
имеет значение true
, то идентификатор рассматривается как постоянная ссылка на полную статью, описанную в элементе <item>
:
<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>
По умолчанию значение isPermaLink
равно true
; если указано false
, то guid
не может рассматриваться как URL.
<comments>
Если элемент указан, то он содержит URL с комментариями к статье.
<comments>http://ekzemplo.com/entry/4403/comments</comments>
Дополнительная информация: http://backend.userland.com/weblogComments.
<author>
Элемент указывает адрес электронной почты автора сообщения. Для газет
и журналов, распространяющих информацию в RSS, автором считается
человек, написавший статью, которую описывает <item>
.
Для коллективных блогов author должен отличаться от контактов
управляющего редактора или веб-мастера. Для блога с одним автором
элемент author лучше опустить.
<author>lawyer@boyer.net (Lawyer Boyer)</author>
RSS вводит ограничения на первые непробельные символы в данных элементов <link>
и <url>
. Данные должны начинаться с утвержденной IANA схемы URI, такой как http://
, https://
, news://
, mailto:
и ftp://
. До RSS 2.0 спецификация позволяла только http://
и ftp://
,
но на деле другие схемы использовались авторами контента и
поддерживались программным обеспечением. Сборщики могут иметь
ограничения на поддерживаемые схемы URI. Разработчики контента не должны
полагать, что всё ПО поддерживает любую схему.
В RSS 0.91 различные элементы ограничивались до 500 или 100 символов. Кроме того, в <channel>
не могло быть более 15 сообщений <item>
.
Ограничения на длины строк отсутствуют, начиная с RSS 0.92.
Процессоры могут налагать свои ограничения, а генераторы могут иметь
опции, ограничивающие количество <item>
в канале, либо длины строк.
В RSS 2.0 предусмотрено связывание канала со своим идентификатором в системе каталогизации при помощи элемента category
, описанного выше. Например, чтобы связать канал с его идентификатором Syndic8, включите в <channel>
элемент category
со свойством domain="Syndic8"
, и значение идентификатора канала в базе данных Syndic8:
<category domain="Syndic8">1765</category>
Часто возникает вопрос касательно элементов <guid>
: это не одно и то же, что и <link>
? В некоторых системах, предоставляющих контент, это так, в других – нет. В ряде систем <link>
является постоянной ссылкой на запись блога; в других – ссылкой на полный текст (если в <item>
содержится краткое изложение), а на запись в блоге ведет <guid>
. В любом случае, рекомендуется, чтобы вы указывали guid
, и, если возможно, он был постоянной ссылкой. Это позволяет сборщикам не повторять записи, даже если они редактировались.
Если у вас есть вопросы о формате RSS 2.0, вы можете задать их в списке рассылки RSS Advisory Board RSS-Public, который служит для поддержки пользователей, авторов и разработчиков.
RSS, появившийся в 1999 г., стремился стать простым и легким для понимания форматом с относительно простыми целями. После того, как он приобрел популярность, разработчики пожелали расширить его модулями, определенными в пространствах имен XML.
Канал RSS 2.0 может содержать элементы и атрибуты, не упомянутые на этой странице, только если они определены в пространствах имен.
Элементы из этого документа не являются членами пространств имен, так что RSS 2.0 сохраняет совместимость с прежними версиями: файл версии 0.91 или 0.92 является валидным файлом версии 2.0. Если бы элементы RSS 2.0 включались в пространство имен, это ограничение не выполнялось бы, файл RSS 0.9x не был бы верным файлом RSS 2.0.
RSS не является идеальным форматом, но он очень распространен и широко поддерживается. Долгое время RSS нуждался в установившейся спецификации. Данная работа призвана помочь формату стать неизменным, дабы стимулировать рост рынка связанных разработок и расчистить путь для новшеств в более современных форматах передачи контента. Мы ожидаем выхода дальнейших версий спецификации только для внесения ясности в текст, но не добавления в формат новых возможностей. Последующая работа связана с модулями, использующими пространства имен и совершенно иными форматами с другими названиями.