1. Каналы новостей
  2. Структура
  3. RSS
  4. Atom
  5. Сравнение RSS и Atom

RSS

RSS иконка
Логотип RSS
  1. История и версии формата RSS
  2. Примеры
  3. Структура и элементы RSS 2.0
    1. Элемент <channel>
    2. Элемент <item>
  4. Дополнительные возможности RSS 2.0
  5. Перспективы развития RSS

RSS — основанный на XML формат описания лент новостей, анонсов статей, изменений в блогах и форумах и т. п.

В разных версиях аббревиатура RSS имела разные расшифровки:

История и версии формата RSS

Подробную историю спецификации RSS можно посмотреть на официальных сайтах RSS Advisory Board и RSS-DEV Working Group (RSS 1.0). Здесь приведем лишь хронологию появления версий RSS и их особенности.

RSS time-line

  1. 15.03.1999: RSS 0.90 (Netscape), опубликовано: Netscape, разработчик: Ramanathan Guha
  2. 10.06.1999: RSS 0.91 (Netscape), опубликовано: Netscape, разработчик: Dan Libby
  3. 09.06.2000: RSS 0.91 (UserLand), опубликовано: UserLand Software, разработчик: Dave Winer
  4. 06.12.2000: RSS 1.0 (RSS-DEV Working Group), опубликовано: RSS-DEV Working Group
  5. 25.12.2000: RSS 0.92, UserLand
  6. 19.08.2002: RSS 2.0, UserLand
  7. 15.07.2003: RSS 2.0 (version 2.0.1), опубликовано: the Berkman Center for Internet & Society at Harvard Law School, разработчик: Dave Winer
  8. 15.07.2003: RSS 2.0 (version 2.0.1-rv-1), опубликовано: the RSS Advisory Board
  9. 17.07.2003: RSS 2.0 (version 2.0.1-rv-2), RSS Advisory Board
  10. 06.04.2004: RSS 2.0 (version 2.0.1-rv-3), RSS Advisory Board
  11. 31.05.2004: RSS 2.0 (version 2.0.1-rv-4), RSS Advisory Board
  12. 19.07.2004: RSS 2.0 (version 2.0.1-rv-5), RSS Advisory Board
  13. 25.01.2005: RSS 2.0 (version 2.0.1-rv-6), RSS Advisory Board
  14. 12.08.2006: RSS 2.0 (version 2.0.8), RSS Advisory Board
  15. 05.06.2007: RSS 2.0 (version 2.0.9), RSS Advisory Board
  16. 15.10.2007: RSS 2.0 (version 2.0.10), RSS Advisory Board
  17. 30.03.2009 (current*): RSS 2.0 (version 2.0.11), RSS Advisory Board

* — текущая версия на момент написания этой страницы

Исторически, разработкой формата занимались по меньшей мере четыре различные организации, в результате сложилась такая ситуация, что различные версии формата слабо совместимы, а то и совсем не совместимы, между собой. Однако это не мешает им уживаться, благодаря тому, что популярные программы-агрегаторы, как правило, понимают несколько форматов.

Особенности версий RSS

ВерсияВладелецКраткая характеристикаСтатусСоветы
0.90NetscapeСложныйОтменен версией 1.0Устарел
0.91UserLandОчень простойОтменен с выходом версии 2.0., но все еще популяренРекомендован для простых публикаций, совместим с RSS 2.0
0.92, 0.93, 0.94UserLandРасширены по сравнению с 0.91Отменены с выходом версии 2.0Рекомендуется использовать 2.0
1.0RSS-DEV Working GroupОснован RDF и пространствах имен (namespaces). Открытая и расширяемая модульная архитектура (стандартные модули: Dublin Core, Syndication, Content).Стабилен. Ведется активная разработка модулей.Подходит для приложений на основе RDF, либо если требуется функциональность определенного модуля
2.0UserLandРасширяется с помощью модулей. Совместим с форматами 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 2.0

RSS — диалект XML, поэтому описание канала RSS обязано соответствовать спецификации XML

Корневым элементом документа RSS является элемент <rss> с обязательным атрибутом version, указывающим версию формата канала. Для формата RSS 2.0 значение этого атрибута должно быть 2.0. Единственный дочерний элемент первого уровня, <channel>, включает метаинформацию о канале (описание канала новостей) и его содержимое — обязательные и необязательные дочерние элементы разной вложенности. Элементы могут содержать обязательные и необязательные атрибуты, определяющие свойства и поведение элемента.

На сайте разработчика приводится подробное описание элементов RSS 2.0, здесь рассмотрим только некоторые из них.

Элемент <channel>

Элемент <channel> определяет канал как таковой и содержит всю информацию. Сравните с RSS 1.0, где этот элемент описывает метаинформацию.

Обязательные элементы канала

  1. title — Название канала, по которому люди будут ссылаться на сервис. Если канал связан с веб-сайтом, то значение title должно совпадать с заголовком стартовой страницы сайта.
  2. link — URL веб-сайта, связанного с каналом.
  3. description — Краткое описание канала.

Необязательные элементы канала

  1. language — Язык канала, как определено W3C.
  2. pubDate — Дата публикации канала как определено в спецификации RFC 822.
  3. lastBuildDate — Время последнего изменения содержимого канала.
  4. category — Указывает одну и более категорию, к которой относится канал
  5. ttl — Время жизни: количество минут, на которые канал может кешироваться перед обновлением с ресурса.
  6. image — Изображение GIF, JPEG или PNG, которое может отображаться с каналом. Например, логотип компании.

Атрибуты элементов

В качестве примера элемента с атрибутами рассмотрим <image>. Это — дочерний элемент <channel>, содержащий три обязательных и три дополнительных элемента:

  1. url — URL изображения GIF, JPEG или PNG, представляющего канал
  2. title — Название изображения, которое будет использовано в атрибуте alt при отображении канала в виде гипертекста.
  3. link — URL сайта; изображение канала будет служить ссылкой на этот сайт.
  4. width, height — Необязательные атрибуты, задающие ширину и высоту изображения в пикселях. Максимальные размеры изображения — 144 х 400px, по умолчанию — 88 x 31px. Например:
    <image url="http://4stud.info/img/logo.gif" 
    	title="Учебные материалы для студентов АСОИУ" 
    	link="http://4stud.info" 
    	width="200px" height="60px" />
    
  5. description — Необязательное описание изображения.

Детальное описание атрибутов прочих элементов доступно на сайте разработчиков. Здесь же подробно рассмотрим элемент <item>.

Элемент <item>

Канал может содержать любое количество элементов <item>, описывающих отслеживаемую информацию. Каждый <item> может содержать (или не содержать, в зависимости от используемых дочерних элементов) заголовок сообщения, его содержание (краткое или полное), ссылку на источник, информацию об авторе и др. Все дочерние элементы <item> являются необязательными, однако по крайней мере <title> или <description> должен существовать. Перечислим некоторые элементы <item>:

Дочерние элементы <item>

  1. title — Заголовок сообщения.
  2. link — URL сообщения.
  3. description — Краткий обзор сообщения.
  4. author — Адрес электронной почты автора сообщения.
  5. category — Включает сообщение в одну или более категорий.
  6. enclosure — Описывает медиа-объект, прикрепленный к сообщению, например:
    <enclosure url="http://www.example.com/mp3/hello.mp3" length="12216320" type="audio/mpeg" />
    
  7. pubDate — Показывает, когда сообщение было опубликовано.

Полный список и подробное описание см. на сайте RSS Advisory Board. В спецификации формата приведены пояснения и рекомендации по использованию каждого из дочерних элементов <item>. Так, например, элемент <author>, который указывает адрес электронной почты автора сообщения, следует использовать, если авторов несколько. Если же автор всех сообщений единственный, то <author> в <item> лучше опустить.

Дополнительные возможности RSS 2.0

Согласно спецификации, версия 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

RSS не является идеальным решением, но он широко распространен и стал, по сути, «народным» форматом. Версия 2.0 стабилизировала ситуацию со спецификациями каналов новостей и дальнейшее развитие RSS разработчики формата видят не в добавлении новых возможностей, а в совершенствовании имеющихся. Последующую работу они связывают с модулями, использующими пространства имен и с разработкой совершенно иных форматов с другими названиями.

Hosted by uCoz