Для начала, определимся с тем, что такое RSS.
Кратко, RSS - это формат синдикации web-контента. Это обычный формат представления данных, основанный на языке XML. Первоначально этот формат был разработан специально для экспорта заголовков новостей. Однако область его применения может выходить далеко за рамки этой задачи. Вы с легкостью можете экспортировать любую информацию, любые материалы. Формат примечателен тем, что дает единство представления данных. Любая информация, оформленная в RSS должна соответствовать определенной структуре, о чем будет написано ниже. Благодаря такой формализации, конечный пользователь получает информацию в стандартизированном виде, что упрощает чтение и работу с ней. Именно удобством работы и объясняется растущий интерес к этому формату и его всё большая популяризация. На данный момент синдицируют информацию уже сотни тысяч сайтов по всему миру, и если Вы, как пользователь, хотите быть в курсе новостей того или иного сайта, Вам нет нужды постоянно его посещать. Раньше Вы могли подписаться на новости сайта, либо на информационную рассылку, однако, RSS имеет ряд неоспоримых преимуществ перед технологией электронной почты, одни из важнейших - это отсутствие спама и гарантированность доставки информации.
Более подробное введение в формат RSS и основы по его использованию, удачно изложены здесь: http://www.webmascon.com/topics/technologies/9a.asp
Ниже приводится краткая спецификация формата RSS 2.0. Настоящая спецификация основана на документе, расположенном по адресу: http://blogs.law.harvard.edu/tech/rss, где Вы можете почерпнуть более обширную информацию на английском языке.
Структура RSS-документа.
RSS - это диалект языка XML. Соответственно, все RSS-файлы должны соответствовать спецификации XML 1.0. Это значит, что правильный rss-файл должен начинаться строкой (приведен пример для универсальной кодировки UTF-8, старайтесь использовать только её):
<?xml version="1.0" encoding="UTF-8" ?> |
Корневым элементом документа является элемент <rss> с одним параметром version. Для файла в формате RSS 2.0 он должен выглядеть так:
<rss version="2.0"> |
Внутри элемента <rss> содержится вся информация.
Упрощенно, структура RSS-файла выглядит так:
<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <title></title> <link></link> <description></description> <image> <url></url> <link></link> <title></title> </image> <lastBuildDate></lastBuildDate> <item> <title></title> <link></link> <description></description> </item> . . . </channel> </rss> |
Далее рассмотрим все допустимые элементы в подробностях.
Channel
Элемент | Описание | Пример |
title | Заголовок канала. Основной элемент, по которому люди смогут идентифицировать Ваш канал. Используйте заголовки умеренной длинны, и максимально информативные. Вначале заголовка можно упомянуть ваш сайт, если он популярен. Отличной техникой является неизменный заголовок, ни в коем случая не указывайте в заголовке дат и тому подобного, для этого есть другие элементы. Избегайте СПАМА в заголовках, поисковиков по RSS всё равно пока нет, а пользователю разобрать что-то будет нелегко. | Kanban.Ru - каталог RSS-каналов. |
link | Ссылка на Ваш сайт. Ссылка должна вести на главную страницу вашего сайта. Или, как максимум, на соответствующий каналу раздел. | http://www.kanban.ru/ |
description | Описание канала. Описание не должно повторять заголовок, а должно его расшифровывать и дополнять. | Последние поступления в каталог русских RSS-каналов. |
language | Язык, на котором написан канал. Несмотря на то, что этот элемент необязателен, УКАЗЫВАЙТЕ ЕГО ВСЕГДА. Это поможет миновать целый список проблем. Есть 2 списка значений для этого элемента этот и этот. Оба допустимы. | ru, ru-ru |
copyright | Копирайт | Copyright 2004, ОАО "Рога и копыта" |
managingEditor | Электронная почта редактора канала (лица, отвечающего за информацию, представленную в канале). | vasja@pupkin.com (Vasja Pupkin) |
webMaster | Электронная почта веб-мастера (лица, отвечающего за техническую реализацию канала). | vasja@pupkin.com (Vasja Pupkin) |
pubDate | Дата публикации информации в канале. Каждый раз, когда информация публикуется, необходимо обновлять этот элемент. Это позволит многим агрегаторам ранжировать Ваш канал по актуальности представленной информации. Формат нужно использовать только этот. Единственное исключение, в том, что год можно указать 2-мя последними числами. Но никогда так не делайте. | Fri, 17 Jun 2004 00:00:01 GMT |
lastBuildDate | Время последнего изменения канала.Отличие от предыдущего в том, что эта дата отражает последнее изменения контента, в то время, как pubDate - дата публикации, а не последнего редактирования.Например, Ваш канал может быть опубликован год назад с информацией о курсах валют, которые обновляются каждый день. | Fri, 17 Jun 2004 00:00:01 GMT |
category | Определяет категорию, к которой принадлежит канал. Можно указать несколько. Подробнее... | <category>Newspapers</category> |
generator | Заполняется программой, сгенерировавшей канал. | HelloWorld! 1.0 |
docs | Ссылка на страницу с документацией по формату, который используется в этом RSS файле. Если инопланетяне получат RSS файл, они всегда смогут его прочитать, ознакомившись со спецификацией по указанному здесь адресу. | http://blogs.law.harvard.edu/tech/rss |
cloud | Указывает веб-сервис, поддерживающий интерфейс rssCloud, отвечающий за уведомления об изменениях в канале. Более подробная информация здесь. | <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/> |
ttl | Этот элемент поддерживается для совместимости, ранее он был предназначен для указания времени в минутах, в течение которого этот канал допустимо кэшировать. | 60 |
image | Путь к изображению в формате GIF, JPEG или PNG, отображаемому в заголовке канала. Дочерние узлы: <url> - URL изображения. <title> - описание изображения, используется в атрибуте ALT HTML-тега IMG, если агрегатор конвертирует канал в HTML. <link> - cсылка на Ваш сайт. Ссылка должна вести на главную страницу вашего сайта. Или, как максимум, на соответствующий каналу раздел. Элементы title и link лучше всего делать копией этих же элементов, указанных в channel. <description> - описание картинки. Используется в элементе TITLE HTML-тега IMG. <width> - ширина картинки в пикселях. Максимально допустимое значение - 400, по умолчанию - 88. <height> - высота картинки в пикселях. Максимально допустимое значение - 144, по умолчанию - 31. | |
rating | Рейтинг PICS канала. | |
textInput | Определяет строку ввода для пользователя. Дочерние узлы: <title> - надпись на кнопке. <description> - разъяснение того, что требуется ввести в поле. <name> - атрибут name для HTML-тега INPUT. <link> - адрес скрипта, которому будут переданы данные. Назначение этого элемента туманно. Вы можете использовать его, например, для ввода пользователем поискового запроса, либо для организации обратной связи, однако, большинство агрегаторов этот элемент игнорируют. | |
skipHours | Может содержать до 24-х элементов <hour>. Они указывают агрегатору, в какие часы можно не обновлять канал, а брать его из кэша. Значения элементов должны быть в диапазоне 0..23. | <hour>0</hour> <hour>1</hour> <hour>2</hour> |
skipDays | Может содержать до 7 элементов <day>. Они указывают, в какие дни недели агрегатор может не обновлять канал. Диапазон значений: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday. | <day>Saturday</day> <day>Sunday</day> |
Item | Канал может содержать несколько элементов <item>. <item> может содержать статью, целиком, в таком случае дочерний элемент link не заполняется. Item может содержать только заголовок статьи, а ссылка будет вести на полный текст. Любая комбинация допустима. Все дочерние элементы item необязательны, однако хотя бы 1 элемент (либо title, либо description) должен присутствовать. |
Item
Элемент | Описание | Пример |
title | Заголовок статьи. | С добрым утром, страна! |
link | Ссылка на полный текст статьи. | http://www.ваш_сайт.ru/ articles/2004/06/17/01.htm |
description | Полный текст статьи, либо аннотация. | |
author | Адрес электронной почты автора статьи. | |
category | То же самое, что и category в channel. | |
comments | Ссылка на страницу с комментариями к статье. | http://www.ваш_сайт.ru/ articles/2004/06/17/comments01.htm |
enclosure | Вложение. К статье можно присоединить любой файл, ссылка на него будет отображена агрегатором. | <enclosure url="http://www.ваш_сайт.ru/ articles/2004/06/17/01.mp3" length="12216320" type="audio/mpeg" /> |
guid | Уникальная строка, однозначно идентифицирующая статью в рамках данного канала. Особых требований нет, однако, стало традицией использовать полный интернет адрес, по которому доступен оргинал статьи. Установка атрибута isPermaLink в true, будет означать, что именно такой идентификатор и используется. | <guid isPermaLink="true">http://www.ваш_сайт.ru/ articles/2004/06/17/01.htm> |
pubDate | Дата публикации статьи. Некоторые агрегаторы не будут отображать статью, если указанная дата еще не настала. Но далеко не все. | Sun, 19 May 2002 15:21:36 GMT |
source | Для каждого <item> cодержит адрес канала и копию его атрибута title. | <source url="http://www.kanban.ru/top30.xml"> KANBAN.Ru. 30 новостей</source> |