Это — версия 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.
<image> — дочерний элемент <channel>, содержащий три обязательных и три дополнительных элемента.
Необязательные элементы — <width> и <height>, задающие ширину и высоту изображения в пикселях. <description> содержит текст, включаемый в атрибут title ссылки, сформированной вокруг изображения в HTML-отображении.
Максимальная ширина — 144, по умолчанию — 88.
Максимальная высота — 400, по умолчанию — 31.
<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 указывает количество минут, на которые канал может кешироваться до следующего обновления из источника. Это позволяет ресурсам RSS управляться сетями файлообмена вроде Gnutella.
Пример:
<ttl>60</ttl>
Элемент канала может содержать необязательный элемент <textInput>, в свою очередь состоящий из четырех обязательных элементов.
Назначение элемента <textInput> загадочно; его можно использовать, чтобы вставить строку поиска или читательских отзывов, но большинство сборщиков его игнорируют.
Канал может содержать любое количество статей, элементов <item>. Статья во многом похожа на публикацию в газете или журнале, <description> — это ее краткое изложение, а <link> указывает на полный текст. Статья может быть самодостаточной, в таком случае <description> содержит текст (можно использовать экранированную сущностями HTML-разметку, см. примеры), а ссылка (<link>) и заголовок (<title>) могут опускаться. Все элементы <item> являются необязательными, однако по крайней мере <title> или <description> должен существовать.
<source> содержит название канала-источника сообщения, полученное из его <title>. Имеет обязательный атрибут URL, ссылку на источник.
<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>
Этот элемент должен передавать источники ссылок и новостей. Может использоваться в команде отправки сообщений в канал и должен автоматически генерироваться, когда сообщение пересылается от сборщика к средству редактирования блога.
Имеет три обязательных атрибута
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />
Пример использования элемента: http://www.thetwowayweb.com/payloadsforrss.
Необязательный атрибут <category> domain указывает на ресурс с классификацией.
Значение элемента — разделенная прямыми слэшами строка, определяющая иерархическое положение в указанной классификации. Процессоры могут устанавливать соглашения по интерпретации категорий.
<category>Grateful Dead</category>
<category domain="http://www.fool.com/cusips">MSFT</category>
Допускается произвольное число элементов для различных доменов и перекрестные ссылки в различных частях одного домена.
Дата, задающая, когда сообщение было опубликовано. Если дата относится к будущему, то сообщение может не показываться до ее наступления.
<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
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.
Если элемент указан, то он содержит URL с комментариями к статье.
<comments>http://ekzemplo.com/entry/4403/comments</comments>
Дополнительная информация: http://backend.userland.com/weblogComments.
Элемент указывает адрес электронной почты автора сообщения. Для газет и журналов, распространяющих информацию в 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 нуждался в установившейся спецификации. Данная работа призвана помочь формату стать неизменным, дабы стимулировать рост рынка связанных разработок и расчистить путь для новшеств в более современных форматах передачи контента. Мы ожидаем выхода дальнейших версий спецификации только для внесения ясности в текст, но не добавления в формат новых возможностей. Последующая работа связана с модулями, использующими пространства имен и совершенно иными форматами с другими названиями.
Алексей Бешенов