RSS — основанный на XML формат описания лент новостей, анонсов статей, изменений в блогах и форумах и т. п.
В разных версиях аббревиатура RSS имела разные расшифровки:
Подробную историю спецификации RSS можно посмотреть на официальных сайтах RSS Advisory Board и RSS-DEV Working Group (RSS 1.0). Здесь приведем лишь хронологию появления версий RSS и их особенности.
RSS time-line
* — текущая версия на момент написания этой страницы
Исторически, разработкой формата занимались по меньшей мере четыре различные организации, в результате сложилась такая ситуация, что различные версии формата слабо совместимы, а то и совсем не совместимы, между собой. Однако это не мешает им уживаться, благодаря тому, что популярные программы-агрегаторы, как правило, понимают несколько форматов.
Особенности версий RSS
Версия | Владелец | Краткая характеристика | Статус | Советы |
---|---|---|---|---|
0.90 | Netscape | Сложный | Отменен версией 1.0 | Устарел |
0.91 | UserLand | Очень простой | Отменен с выходом версии 2.0., но все еще популярен | Рекомендован для простых публикаций, совместим с RSS 2.0 |
0.92, 0.93, 0.94 | UserLand | Расширены по сравнению с 0.91 | Отменены с выходом версии 2.0 | Рекомендуется использовать 2.0 |
1.0 | RSS-DEV Working Group | Основан RDF и пространствах имен (namespaces). Открытая и расширяемая модульная архитектура (стандартные модули: Dublin Core, Syndication, Content). | Стабилен. Ведется активная разработка модулей. | Подходит для приложений на основе RDF, либо если требуется функциональность определенного модуля |
2.0 | UserLand | Расширяется с помощью модулей. Совместим с форматами 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 — диалект XML, поэтому описание канала RSS обязано соответствовать спецификации XML
Корневым элементом документа RSS является элемент <rss>
с обязательным атрибутом version
, указывающим версию формата канала. Для формата RSS 2.0 значение этого атрибута должно быть 2.0
. Единственный дочерний элемент первого уровня, <channel>
, включает метаинформацию о канале (описание канала новостей) и его содержимое &mdash обязательные и необязательные дочерние элементы разной вложенности. Элементы могут содержать обязательные и необязательные атрибуты, определяющие свойства и поведение элемента.
На сайте разработчика приводится подробное описание элементов RSS 2.0, здесь рассмотрим только некоторые из них.
Элемент <channel>
определяет канал как таковой и содержит всю информацию. Сравните с RSS 1.0, где этот элемент описывает метаинформацию.
Обязательные элементы канала
title
— Название канала, по которому люди будут ссылаться на сервис. Если канал связан с веб-сайтом, то значение title
должно совпадать с заголовком стартовой страницы сайта.link
— URL веб-сайта, связанного с каналом.description
— Краткое описание канала.Необязательные элементы канала
language
— Язык канала, как определено W3C.pubDate
— Дата публикации канала как определено в спецификации RFC 822.lastBuildDate
— Время последнего изменения содержимого канала.category
— Указывает одну и более категорию, к которой относится каналttl
— Время жизни: количество минут, на которые канал может кешироваться перед обновлением с ресурса.image
— Изображение GIF, JPEG или PNG, которое может отображаться с каналом. Например, логотип компании.Атрибуты элементов
В качестве примера элемента с атрибутами рассмотрим <image>
. Это — дочерний элемент <channel>
, содержащий три обязательных и три дополнительных элемента:
url
— URL изображения GIF, JPEG или PNG, представляющего каналtitle
— Название изображения, которое будет использовано в атрибуте alt
при отображении канала в виде гипертекста.link
— URL сайта; изображение канала будет служить ссылкой на этот сайт.width, height
— Необязательные атрибуты, задающие ширину и высоту изображения в пикселях. Максимальные размеры изображения — 144 х 400px, по умолчанию — 88 x 31px. Например:
<image url="http://4stud.info/img/logo.gif" title="Учебные материалы для студентов АСОИУ" link="http://4stud.info" width="200px" height="60px" />
description
— Необязательное описание изображения.Детальное описание атрибутов прочих элементов доступно на сайте разработчиков. Здесь же подробно рассмотрим элемент <item>
.
Канал может содержать любое количество элементов <item>
, описывающих отслеживаемую информацию. Каждый <item>
может содержать (или не содержать, в зависимости от используемых дочерних элементов) заголовок сообщения, его содержание (краткое или полное), ссылку на источник, информацию об авторе и др. Все дочерние элементы <item>
являются необязательными, однако по крайней мере <title>
или <description>
должен существовать. Перечислим некоторые элементы <item>:
Дочерние элементы <item>
title
— Заголовок сообщения.link
— URL сообщения.description
— Краткий обзор сообщения.author
— Адрес электронной почты автора сообщения.category
— Включает сообщение в одну или более категорий.enclosure
— Описывает медиа-объект, прикрепленный к сообщению, например:
<enclosure url="http://www.example.com/mp3/hello.mp3" length="12216320" type="audio/mpeg" />
pubDate
— Показывает, когда сообщение было опубликовано.Полный список и подробное описание см. на сайте RSS Advisory Board. В спецификации формата приведены пояснения и рекомендации по использованию каждого из дочерних элементов <item>
. Так, например, элемент <author>
, который указывает адрес электронной почты автора сообщения, следует использовать, если авторов несколько. Если же автор всех сообщений единственный, то <author>
в <item>
лучше опустить.
Согласно спецификации, версия 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 не является идеальным решением, но он широко распространен и стал, по сути, «народным» форматом. Версия 2.0 стабилизировала ситуацию со спецификациями каналов новостей и дальнейшее развитие RSS разработчики формата видят не в добавлении новых возможностей, а в совершенствовании имеющихся. Последующую работу они связывают с модулями, использующими пространства имен и с разработкой совершенно иных форматов с другими названиями.
Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.
Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.
Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.
Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.