Введение в новостные RSS-каналы

Использование открытых форматов для доставки контента

Краткое RDF-описание сайта (RSS) является одним из наиболее широко используемых XML-форматов в Web. В данной статье описано, как создать и использовать файлы RSS-каналов, а также описаны их возможности. Будет показано, почему такие компании как Netscape, Userland и Moreover используют RSS-каналы для распределения и доставки обзоров и заголовков статей. В данную статью включен пример программы с элементами файла RSS-канала, а также пример на языке Perl, использующий модуль XML::RSS.

Джеймс Левин (James Lewin), президент , The Lewin Group

Джеймс Левин (James Lewin) работает с Интернетом с 1995 года, беспроводными сетями он стал заниматься только с 2000 года. Джеймс является президентом и владельцем компании The Lewin Group, поставщиком сетевых решений и решений для Интернета. Он является сертифицированным инженером по продуктам Microsoft и работает с корпорацией Microsoft и инструментальными средствами разработки Интернет-приложений с открытым исходным кодом.



10.11.2000

Что представляют собой метаданные?

Файл RSS-каналов представляют собой тип метаданных. Метаданные:

  • единицы информации об информации;
  • обычно используются для описания контента, контекста и характеристик данных.

Примерами метаданных являются HTML-метатеги keywords и description, предоставляющие сведения о Web-страницах.

Файлы краткого RDF-описания сайтов (RSS) основаны на XML и предоставляют открытый способ доставки и объединения Web-контента. С помощью формата RSS можно создавать каналы данных, содержащие заголовки, ссылки и краткое изложение статей с Web-сайтов. Эти файлы описывают канал информации, который может включать логотип, ссылку на сайт, поле ввода и несколько "информационных сюжетов". На страницы других сайтов эту информацию можно добавлять автоматически. Можно также использовать RSS-каналы с других сайтов для размещения на своем сайте текущих сводок новостей или статей по интересным темам. Такие способы позволяют привлечь больше посетителей, заинтересованных в самой последней информации.

Формат RSS берет начало на сайтах My Netscape и My UserLand, оба из которых объединяли контент, поставляемый из новостных XML-каналов. Это одно из простейших XML-приложений, поэтому RSS-канал популярен среди многих разработчиков при необходимости выполнения подобных задач. Пользователи Moreover, Meerkat, UserLand и древовидной структуры XML. В данной статье описан формат RSS и некоторые модули Perl с открытым исходным кодом, позволяющие легко использовать файлы RSS-каналов.

Что точно представляют собой файлы RSS-каналов?

Файлы RSS-каналов представляют собой метаданные (см. врезку Что представляют собой метаданные?). Пока они не используются или если не показано на примере, довольно сложно понять, что представляют собой файлы RSS-каналов, но эти файлы легко создать. Как правило, файл RSS-канала содержит четыре элемента основного типа: канал, изображение, позиции и текстовый ввод. Эти элементы легко идентифицируются и кодируются (см. пример на листинге 1). В примере элемента файла RSS 0.91 на листинге 1 содержится три четко выделенных части: название, ссылка и описание.

Листинг 1. Пример элемента в RSS-канале
<item>
  <title>Mozilla Dispenses with Old, Proprietary DOM</title>
<link>http://www.mozillazine.org/talkback.html?article=604</link>
<description>The Mozilla team has decided to forgo backwards compatibility with Netscape's proprietary DOM.</description>

В заголовке публикуются коллекции в результате объединения файлов RSS. HTML, как правило, используется для отображения указанного названия в виде заголовка. Название также обычно служит в кaчестве ссылки, используя URL-адрес, указанный в элементе link. Наконец, описание обычно представлено в виде краткого содержания статьи, расположенной под заголовком.


Создание файлов RSS-каналов

Можно создавать файлы RSS-каналов в соответствии с предложенной спецификацией RSS 1.0 или в соответствии с более популярной спецификацией RSS 0.91. Для рабочих приложений используйте RSS 0.91, предложенная спецификация 1.0 все еще находится на рассмотрении. Раздел Ресурсы включает ссылки на обе спецификации - 1.0 и 0.91, предоставляющие подробный обзор всех элементов. Данное обсуждение относится к наиболее общим используемым элементам, все примеры в статье относятся к формату 0.91.

Между предлагаемой спецификацией 1.0 и форматом 0.91 имеется одно значительное различие: спецификация 1.0 включает элементы среды описания ресурсов (RDF), обеспечивающие большую гибкость за счет некоторого увеличения сложности. Данная предложенная спецификация является более гибкой, описывает стандарт W3C для файлов RSS-каналов, удовлетворяющий текущим потребностям, будет совместима с предыдущими версиями, а также адаптирована к будущим требованиям.

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

RSS-канал представляет собой XML-файл. Поэтому все RSS-документы начинаются с объявления XML 1.0, затем идет объявление типа документа RSS (см. листинг 2).

Листинг 2. XML-объявление
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
 "http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">

В первой строке объявляется XML-документ. Во второй строке находится объявление DTD, определяющее, что данный XML-файл основан на определении типа документа (DTD) RSS 0.91 компании Netscape. Наконец, начало контента файла RSS-канала отмечается корневым элементом, все содержимое находится между тегами <rss version "0.91"> и </rss>.


Четыре основных раздела файла RSS-канала

Четыре основных раздела файла RSS-канала находятся после корневого элемента. К ним относятся разделы channel, image, item и text input. На практике элементы channel и item необходимы для любого рабочего файла RSS-канала, элементы image и text input являются дополнительными.

Раздел channel

Элемент channel содержит метаданные, описывающие собственно канал: что он собой представляет и кто его создал. Раздел channel является необходимым элементом и включает имя канала, его описание, язык и URL-адрес. Как правило, URL-адрес используется для указания на источник информации канала.

В листинге 3 показано начало элемента channel. В данной части элемента channel определяется канал и приводятся сведения о канале.

Листинг 3. Элемент channel
<channel>
  <title>MozillaZine</title>
<link>http://www.mozillazine.org</link>
<description>Your source for Mozilla news, advocacy, interviews, builds, and more! </description>
<language>en-us</language> </channel>

Элемент channel содержит остальные теги канала, описывающие канал и позволяющие отображать его содержимое в HTML. Тег title можно рассматривать как ссылку на заголовок со следующим описанием. Определение языка канала позволяет накопителям фильтровать новостные каналы и предоставляет программе визуализации информацию, необходимую для правильного отображения языка.

Тег </channnel> размещается после всех элементов канала и используется как закрывающий тег. RSS соответствует спецификациям XML, поэтому раздел element должен быть оформлен правильно; для него необходимо использовать закрывающий тег.

В соответствии со спецификацией канала 0.91 можно включить девять дополнительных тегов. Примерами каналов являются PICS Rating, Copyright Identifier, Publication Date и Webmaster. Эти дополнительные элементы можно использовать в различных целях. Например, сайты, объединяющие контент, могут использовать такую дополнительную мета-информацию для разрешения пользователям фильтровать новостные каналы на основе рейтингов Platform for Internet Content Selection (PICS). Дополнительную информацию о других тегах канала см. в спецификации RSS.

Раздел image

Элемент image не является обязательным и обычно используется для включения логотипа поставщика канала. Размер изображения по умолчанию составляет 88 пикселей в ширину и 31 пиксел в высоту, хотя логотип можно увеличить до размера 144 на 400 пикселей. Далее показан пример элемента image:

Листинг 4. Элемент image
<image>
  <title>MozillaZine</title>
<url>http://www.mozillazine.org/image/mynetscape88.gif</url>
<link>http://www.mozillazine.org</link>
<width>88</width>
<height>31</height> </image>

Теги элемента title, URL, link, width и height позволяют средствам визуализации преобразовать файл в HTML-формат. Тег title обычно используется для текста изображения ALT. По возможности не увеличивайте изображение больше размера 88 x 31 пиксел, потому что многие средства визуализации преобразуют каналы в таблицы фиксированной ширины менее 100 пиксел. Большие графические изображения могут привести к нежелательному разрыву таблиц, или изображение не будет показываться вообще.

Элемент item

Элемент item является самым важным элементом канала и обычно составляет динамическую часть RSS-канала. Если элементы channel, image и text input определяют идентичность канала и не изменяются в течение длительных периодов времени, элементы канала item отображаются как новостные заголовки, ценность канала зависит от их частого изменения. Далее показан пример элемента канала item:

Листинг 5. Элемент item
<item>
  <title>Java2 in Navigator 5?</title>
<link>http://www.mozillazine.org/talkback.html?article=607</link>
<description>Will Java2 be an integrated part of Navigator 5? Read more about it in this discussion...</description> </item>

Для канала можно использовать до 15 элементов item. Это разумное ограничение, так как каналы в основном используются для распространения последнего Web-контента. Длина названий не должна превышать 100 символов, длина описаний - 500 символов. Название элемента item обычно отображается как заголовок со ссылкой на всю статью, URL-адрес которой определяется тегом link. Описание элемента item обычно используется для краткого обзора содержимого статьи или для комментария к статье. Новостные каналы используют описание для выделения содержимого новых статей, обычно на сайте владельца канала, каналы Web-журналов используют описание для предоставления комментариев к различному контенту, часто взятому со сторонних сайтов.

Практически вся прелесть RSS-формата заключается в элементе item. Как видно на примере выше, разработчики легко могут использовать элементы item для определения, а пользователи - для чтения.

Элемент text input

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

Листинг 6. Элемент text input
<textinput>
  <title>Send</title>
<description>Comments about MozillaZine?</description>
<name>responseText</name>
<link>http://www.mozillazine.org/cgi-bin/sampleonly.cgi</link> </textinput>

Тег title обычно отображается в виде текста на кнопке отправки формы, тег description - в виде текста до или над полем ввода. Тег name элемента text input отправляется вместе с содержимым текстового поля при нажатии кнопки Submit.

Это четыре основных элемента файла RSS-канала. После добавления элементов image, item и text input на забудьте добавить закрывающий тег </channel> и тег закрытия RSS-канала </rss>.

Рассматриваемая спецификация RSS 1.0 включает модули, позволяющие расширить RSS-канал для поставки дополнительной информации без необходимости переписывать спецификацию. Например, можно написать модуль для добавления к каналу мультимедийных данных для клиентов с широкополосным доступом, тогда как для обычных клиентов по-прежнему будут отображаться заголовки и описания. Можно изучить модули подробней и использовать их преимущества после принятия спецификации 1.0.


Работа с файлами RSS-каналов

Имеется несколько способов начать использовать файлы RSS-каналов. Файлы RSS-каналов являются простыми, поэтому их можно создавать с помощью любого текстового редактора или XML-редактора. Также имеются сайты с Web-формами, позволяющие создавать пользовательские файлы RSS-канала в оперативном режиме. Наконец, можно также попробовать создавать файлы RSS-каналов автоматически. Инструментальные средства с открытым исходным кодом для Java, PHP и Perl могут оказаться полезными (см. в разделе Ресурсы дополнительные примеры).

После создания простого файла RSS-канала его можно проверить. Это можно сделать на сайте Netscape, указанном в разделе Ресурсы . Разместите файл RSS-канала в общедоступной области Web-сайта, перейдите на сайт Netscape, введите URL-адрес своего канала, и средство проверки протестирует файл на совместимость.


Публикация RSS-файла

Когда на Web-сайте имеется допустимый файл RSS-канала, можно выполнять доставку контента. Это можно сделать в виде публикации и подписки - информация публикуется, любой желающий может на нее подписаться - или можно отправить свой URL-адрес в такую систему как Moreover или Userland. Такие компании занимаются объединением контента с различных сайтов и его публикацией в виде каналов. Хотя информация с вашего сайта может смешиваться с контентом других поставщиков, агрегаторы могут значительно улучшить границы распространения информации.

Файлы RSS-каналов также можно использовать для частного распространения в локальных или корпоративных сетях. Благодаря своей простоте файлы RSS-каналов являются хорошим способом публиковать информацию в различных системах.


Анализ файлов RSS

Начав использование файлов RSS-каналов, потребуется выполнять обратный анализ этих файлов и разбивать их на отдельные блоки данных. Это можно делать с помощью различных инструментальных средств с открытым исходным кодом, написанных на Java, Perl, PHP и даже ASP. Анализатор языка считывает поток XML-текста, определяет открывающие и закрывающие теги, находит текст, заключенный в тегах, и создает указатели для работы с проанализированной информацией. После выполнения анализа эту информацию можно включить в динамически создаваемые страницы.

В листинге 7 показана простая программа на Perl, считывающая файлы RSS-каналов. Даже если пользватель не работает на Perl, в примере содержится несколько идей, которые можно использовать в собственной среде разработки.

Perl представляет собой замечательный язык для манипуляций с файлами RSS-каналов; наличие достаточного количества открытого кода позволяет легко начать работу с Perl. Джонатан Айзенцопф (Jonathan Eisenzopf) разработал модуль XML::RSS для создания и анализа файлов RSS-каналов. Чтобы воспользоваться преимуществами этого анализатора, потребуется модульXML::Parser. Эти два модуля Perl можно бесплатно загрузить на CPAN (см. раздел Ресурсы).

Далее приводится пример использования модуля XML:RSS:

Листинг 7. Пример на Perl с использованием модуля XML::RSS
# Setup includes
use strict;
use XML::RSS;
use LWP::Simple;
# Declare variables for URL to be parsed
my $url2parse;
# Get the command-line argument
my $arg = shift;
# Create new instance of XML::RSS
my $rss = new XML::RSS;
# Get the URL, assign it to url2parse, and then parse the RSS content
$url2parse = get($arg);
die "Could not retrieve $arg" unless $url2parse;
$rss->parse($url2parse);

Данный пример кода передает URL-адрес в сценарий Perl для анализа. После выполнения анализа элементы файла RSS можно использовать различными способами. Например, элементы RSS можно использовать для создания списка заголовков:

Листинг 8. Создание заголовков с помощью Perl
# Print the channel items
foreach my $item (@{$rss->{'items'}}) {
     next unless defined($item->{'title'}) && defined($item->{'link'});
     print "<li><a href=\"$item->{'link'}\">$item->{'title'}</a><BR>\n";
}

В данном примере просматривается массив элементов RSS, у каждого элемента проверяется наличие названия и ссылки. Неполные элементы пропускаются; остальные включаются в список заголовков.

Если планируется использовать модуль XML::RSS, его можно открыть и просмотреть в любом текстовом редакторе; в модуле содержится множество комментариев с предположениями по его эффективному использованию.

После опробования своих сил в создании файлов RSS-каналов, станет понятно, какими способами эти каналы можно использовать. Например, можно создать сценарии для генерации кратких отчетов об RSS-каналах при каждом обновлении сайта, или сценарии для периодического получения новостей с других сайтов и автоматического обновления собственной новостной страницы. (Как создавать такие сценарии - это тема для другой статьи, но некоторые полезные инструментальные средства с открытым исходным кодом для автоматического создания кратких обзоров RSS-каналов можно найти в разделе Ресурсы.

Несколько советов по созданию и использованию файлов RSS-каналов. В разделе "Ресурсы" можно найти дополнительную информацию, например, источники файлов RSS-каналов, спецификации RSS и адреса, по которым можно отправлять свои заголовки.

Ресурсы

Научиться

  • Оригинал статьи An introduction to RSS news feeds;
  • Сайт RSS 2.0 Specification содержит общие сведения, например, основные данные, мотивы и цели проекта, а также рабочую спецификацию;
  • Рекомендации консорциума W3C для модели RDF и спецификации синтаксиса содержатся на сайте Resource Description Framework;
  • Компания Netscape разработала формат RSS 0.9. На сайте компании имеется описание RSS 0.9 и последние спецификации;
  • My Userland собирает заголовки с различных источников. Это один из первых сайтов, использующих RSS-каналы.

Получить продукты и технологии

  • На сайте Webreference имеется редактор RSS Channel Editor - прекрасное средство для создания файлов RSS-каналов;
  • На сайте Wireless Developer Network имеются инструментальные средства для анализа файлов RSS с помощью PHP;
  • Компания Moreover является агрегатором бесплатных новостных каналов с более чем 1500 новостных источников;
  • Meerkat представляет собой средство чтения собранной информации на основе RSS, а также источник новостных каналов.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML
ArticleID=160328
ArticleTitle=Введение в новостные RSS-каналы
publish-date=11102000