Этот текст является неофициальным вольным переводом стандарта и не имеет той же силы, что и оригинал.
Это – версия 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.
titletitle канала должен совпадать с title заглавной веб-страницы.linkdescriptionlanguagecopyrightmanagingEditorwebMasterpubDatepubDate канала. Дата и время в RSS соответствуют спецификации RFC 822, за исключением того, что год может представляться двумя или четырьмя цифрами (последнее предпочтительно).lastBuildDatecategory<item>.generatordocscloudttlimageratingtextInputskipHoursskipDays<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> должен существовать.
titlelinkdescriptionauthorcategorycommentsenclosureguidpubDatesource<source><source> содержит название канала-источника сообщения, полученное из его <title>. Имеет обязательный атрибут URL, ссылку на источник.
<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>
Этот элемент должен передавать источники ссылок и новостей. Может использоваться в команде отправки сообщений в канал и должен автоматически генерироваться, когда сообщение пересылается от сборщика к средству редактирования блога.
<enclosure>Имеет три обязательных атрибута
urllengthtype<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 нуждался в установившейся спецификации. Данная работа призвана помочь формату стать неизменным, дабы стимулировать рост рынка связанных разработок и расчистить путь для новшеств в более современных форматах передачи контента. Мы ожидаем выхода дальнейших версий спецификации только для внесения ясности в текст, но не добавления в формат новых возможностей. Последующая работа связана с модулями, использующими пространства имен и совершенно иными форматами с другими названиями.