RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

Технологии RSS

 
RSS новости: чем и зачем?

Удивительный факт: технология RSS, позволяющая значительно снизить входящий трафик и автоматизировать доставку новостей с веб-сайтов на компьютер пользователя, широко распространена на Западе и практически неизвестна в России

Что такое RSS?

RSS (Really Simple Syndication) - это специальный формат, в котором сайты могут поставлять свои новости до конечного потребителя. Разработанная в 1999 году специалистами компании Netscape Communications, технология RSS позволяет компьютерам автоматически распознавать и отбирать нужную пользователю информацию, группировать ее по темам, а также следить за изменением соответствующих веб-ресурсов.

Основные черты технологии RSS:

- используется протокол HTTP, что дает возможность получать новости практически со всех сайтов, на которые можно зайти обычным (с помощью браузера) путем

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

- получаемая через RSS информация значительно уменьшает входящий трафик, так как в ней практически полностью отсутствует реклама, потому что информация приходит исключительно в текстовом виде.

 

Новости

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

Что такое агрегатор?

RSS-агрегатор - это программа, предназначенная для сбора и систематизации RSS-Каналов. Внешне агрегатор напоминает почтовую программу: слева - колонка с рассортированным по категориям списком интересующих веб-сайтов (каждый веб-сайт - это RSS-канал), а в правой части окна выводится собранная информация.

Где и как найти RSS-каналы?

Алгоритм подключения RSS-канала одинаков для всех агрегаторов:

- сначала нужно добавить в агрегатор ссылки на RSS-каналы (кстати говоря, практически во всех агрегаторах уже предуставлены наиболее популярные RSS-каналы - спортивные, новостные, развлекательные, каналы софткаталогов и т.д.). Обычно ссылки на RSS-канал, размещаемые на веб-сайтах, выглядят в виде оранжевого или красного прямоугольника с надписью "XML" (RSS формат основан на XLM) или "RSS" (такой значок находится и на титульной странице Софтодрома - прямо в самом начале рубрики "Новинки" - []). Увидев такую ссылку, ее можно просто скопировать из браузера и вставить в агрегатор, указав ее в качестве нового RSS-канала (RSS-колонки).

Еще один способ нахождения RSS-каналов - их поиск через любой поисковик. Для примера берем google.ru: если ввести в поисковой строке

rss site:lenta.ru

(вместо lenta.ru нужно указать интересующий сайт)

то будут найдены все страницы этого сайта, на которых упоминается RSS (если они, конечено, есть), в том числе имеющие в своем названии или расширении rss или xml. Как раз этот URL нам и нужен - как правило, ссылка на RSS-канал содержит в своем названии или rss, или xml, или и то, и другое: rss.php, news.rss, rss.xml и т.п.

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

RSS-агрегаторов выпущено довольно много (как бесплатных, так и условно-бесплатных), поэтому перечислю лишь те, что размещены в каталоге Softodrom.ru: одним из наиболее популярных услово-бесплатных агрегаторов является FeedDemon, не менее удобны RSS Captor ии GetNews; интерес представляет и WebNews.TV с оригинальным интерфейсом в виде анимированного телевизора, озвучивающего новости голосом. Из бесплатных программ имеет смысл обратить внимание на Abilon - компактный RSS-агрегатор с многоязычным (включая русский) интерфейсом.

Наконец, не стоит забывать о том, что некоторые браузеры, в том числе Opera и Mozilla FireFox, имеют встроенный RSS-агрегатор. Правда, специализированные программы-агрегаторы обладают более широкими возможностями, но для начала - чтобы оценить всю прелесть RSS - вполне хватит и тех, что предоставляют агрегаторы браузеров.

Channel

Элемент Описание Пример
title Заголовок канала. Основной элемент, по которому люди смогут идентифицировать Ваш канал. Используйте заголовки умеренной длинны, и максимально информативные. Вначале заголовка можно упомянуть ваш сайт, если он популярен. Отличной техникой является неизменный заголовок, ни в коем случая не указывайте в заголовке дат и тому подобного, для этого есть другие элементы. Избегайте СПАМА в заголовках, поисковиков по RSS всё-равно пока нет, а пользователю разобрать что-то будет нелегко. Kanban.Ru - каталог RSS-каналов.
link Ссылка на Ваш сайт. Ссылка должна вести на главную страницу вашего сайта. Или, как максимум, на соответствующий каналу раздел.
description Описание канала. Описание не должно повторять заголовок, а должно его расшифровывать и дополнять. Последние поступления в каталог русских RSS-каналов.
language Язык, на котором написан канал. Несмотря на то, что этот элемент необязателен, УКАЗЫВАЙТЕ ЕГО ВСЕГДА. Это поможет миновать целый список проблем. Есть 2 списка значений для этого элемента. Оба допустимы. ru, ru-ru
copyright Копирайт Copyright 2004, ОАО "Рога и копыта"
managingEditor Электронная почта редактора канала (лица, отвечающего за информацию, представленную в канале). [email protected] (Vasja Pupkin)
webMaster Электронная почта веб-мастера (лица, отвечающего за техническую реализацию канала). [email protected] (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 файл, они всегда смогут его прочитать, ознакомившись со спецификацией по указанному здесь адресу.
cloud Указывает веб-сервис, поддерживающий интерфейс rssCloud, отвечающий за уведомления об изменениях в канале.
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 Рейтинг канала.  
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 Ссылка на полный текст статьи.
description Полный текст статьи, либо аннотация.  
author Адрес электронной почты автора статьи.  
category То же самое, что и category в channel.  
comments Ссылка на страницу с комментариями к статье.
enclosure Вложение. К статье можно присоединить любой файл, ссылка на него будет отображена агрегатором.
guid Уникальная строка, однозначно идентифицирующая статью в рамках данного канала. Особых требований нет, однако, стало традицией использовать полный интернет адрес, по которому доступен оргинал статьи. Установка атрибута isPermaLink в true, будет означать, что именно такой идентификатор и используется.
pubDate Дата публикации статьи. Некоторые агрегаторы не будут отображать статью, если указанная дата еще не настала. Но далеко не все. Sun, 19 May 2002 15:21:36 GMT
source Для каждого <item> cодержит адрес канала и копию его атрибута title.

Разбираемся в технологии RSS и пишем свою новостную ленту.

На верхнем уровне любого RSS-документа находится элемент <rss>, который содержит обязательный атрибут version, указывающий на версию документа. В этой статье я буду описывать версию 2.0 и поэтому атрибут version должен иметь соответствующее значение.

Уровнем ниже от <rss> лежит элемент <channel>, который встречается однажды и содержит всю основную информацию об RSS-канале и о его содержимом.

Элемент <channel> обязательно имеет в себе троих потомков: title – заголовок блога, link – ссылка на соответствующий ленте web-ресурс и description – описание ленты.

Внутри этого элемента может присутствовать еще куча тэгов, однако основной интерес для нас будут представлять элементы <item>, в которых будет находится информация о публикациях. Внутри <item> может содержаться большое число элементов: title, link, description, category, comments, enclosure, guid, pubDate и source. Назначение каждого из этих полей, в общем-то, ясно из названий, однако, чтобы тебе было понятнее, я просто приведу пример небольшого RSS-документа:

Пример RSS-документа

<?xml version="1.0" encoding="windows-1251" ?>

<rss version="2.0">

<channel>

  <title>Мои крутые новости</title>

  <description>Офигенные новости из жизни заводчика уругвайских тушканов.</description>

<image>

  <title>Мои крутые новости</title>

  </image>

  <lastBuildDate>10 Mar 2005 15:25:46 +0300</lastBuildDate>

<item>

  <title>У тушкана Кики родилась двойня!</title>

  <description>Сегодня в пять часов утра у Кики родилась прекрасная двойня – мальчик и девочка. Вес новорожденных составляет, соответственно, 120 и 95 граммов.</description>

  <pubDate>09 Mar 2005 20:10:09 +0300</pubDate>

 </item>

</channel>

</rss>

Вот такой вот формат. Обрати внимание, элемент <image> позволяет указать соответствующую твоему каналу картинку. Что касается остальных неизвестных тебе тэгов, то знай, что <pubDate> определяет время публикации, а <guid> - уникальный идентификатор записи, например, соответствующий ей web-адрес.

И что здесь красивого?

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

Архитектура блога

Все просто. В базе данных mySQL есть таблица rssblog, которая имеет следующую структуру:

CREATE TABLE rssblog (pid int not null primary key auto_increment, pubDate date, title text, descr text);

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

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

Процедура, строящая RSS-ленту

function BuildRss($title, $link, $desc) {

$re=mysql_query(“select * from rssblog order by pid desc limit 100”);

echo “<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\n”;

echo “<rss version=\"2.0\">

<channel>

<title>$title</title> # Заголовок ленты

<link>$link</link> # Ссылка на сайт

<description>$desc</description>”; # Описание ленты

while($res=mysql_fetch_array($re)) { # Цикл по всем нужным записям в таблице

echo “

<item> # Новый пост

<title>$res[title]</title> # Заголовок

<link>$res[link]</link> # Ссылка

<description>$res[descк]</description> # Описание

<pubDate>$res[pubDate]</pubDate> # Дата публикации

<guid>$link/content.php?pid=$$res[pid]</guid> # Идентификатор

</item>”;

}

echo “</channel>

</rss>”;

}

Теперь если сохранить эту процедуру в php-скрипте и выполнить ее на сервере, клиенту вернется RSS-документ, который удобнее всего просматривать при помощи специальной программы вроде ActiveRefresh. На скрине можно видеть, каким образом отображаются новости в клиентском софте, да и сам можешь легко это попробовать: адрес ленты

Создать RSS-ленту ничуть не сложнее, чем сформировать, скажем, html-таблицу: нужно лишь знать грамматику языка, а расположить в нужной последовательности тэги – это совсем не сложно.

Как написать своего RSS-клиента?

В самом деле, как сделать свой собственный RSS-клиент на PHP и как он может выглядеть? Примерно так. Это обычный сценарий, который при выполнении получает с удаленного сервера актуальный RSS-документ и, обрабатывая его встроенным в PHP xml-парсером, генерирует красиво размеченный html-документ. Тут рационально добавить поддержку нескольких лент сразу и кэширование информации, чтобы не перекачивать каждый раз RSS-ленту заново. Время, в течение которого информация актуальна, можно получать из параметров RSS-блога: оно обычно указывается в элементе <ttl>.

Применение XSLT для форматирования XML-документов

[что такое XSLT?]

Прежде всего, для чего нам может понадобиться XSLT и что это такое? Слушая рассказы об XML, у тебя, наверное, не раз возникал вопрос: зачем все это нужно, если xml-документ никак не форматируется и пользователь, если откроет его в браузере, получит на экране просто содержимое файла со всеми тегами.По этой причине каждый документ может быть связан со специальным файлом форматирования, в котором будет четко определено его представление. В этом случае получается такая двойственность информации: сами данные хранятся в одном файле, а то, как эти данные будут показаны пользователю, указывается в другом. Собственно, язык, который определяет форматирование XML-документов, и называется XSL (Extensible Style Language), а само преобразование документа к его конкретному представлению образует еще одну аббревиатуру - XSLT (XSL Transformations).

Для чего это может использоваться? Приведу пару простых примеров, которые покажут, насколько универсальна эта технология.

Предположим есть сайт, где ты время от времени размещаешь какие-то свои статьи, новости из жизни, фотографии и т.д. Но вот тебе в определенный момент захотелось сменить дизайн сайта и ты понял, что сделать это не так-то и легко. Но с использованием XML не нужно никаких громоздких систем! Весь сайт можно довольно легко представить в виде XML-документа, со своими собственными тегами, задающими структуру проекта. В этом случае получается, что сайт логически разбит на кирпичики и довольно здорово структурирован. Но, конечно, показывать такой документ пользователю – плохая идея, поэтому надо будет создать файл XSLT-форматирования, в котором будет указано, в каком виде данные будут отображаться на экране пользователя. XML-документ здесь играет роль своеобразного буфера между непосредственным источником информации и ее графическим представлением. Ну и конечно изменить дизайн системы станет чрезвычайно просто, для этого не потребуется менять ни строчки php-кода - вся разметка наконец-то будет на 100% отделена от управляющих скриптов.

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

[как это использовать?]

Файл преобразований XSLT – это, по сути своей, обычный XML-файл, имеющий строго определенный в спецификации формата вид. Этот файл подключается к XML-страницам при помощи следующего тэга:

<?xml-stylesheet type='text/xsl' href='design.xsl'?>

Чтобы тебе было понятнее, приведу пример простого xml-файла с данными и файла XSLT-преобразований.

XML-файл с подключенным файлом преобразований

<?xml version="1.0" encoding="windows-1251" ?>

<?xml-stylesheet type='text/xsl' href='xsl.xsl'?>

<xa number="77 (май)">

<vzlom caption="Взлом">

<article>

<title>HackFaq</title>

<comment>Хак-фак</comment>

<author>Sidex</author>

</article>

...

...

</vzlom>

</xa>

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

[форматируем данные]

Каждый файл с XSL-преобразованиями начинается с элемента xsl:stylesheet, в параметрах которого указывается версия (version='1.0') и статичная ссылка на пространство имен. Эта строка, вообще говоря, одинаковая для всех файлов преобразований.

После главной строки в моем примере идет элемент xsl:template, указывающий шаблон элементов, для которых будет применены правила преобразований. Здесь можно указать тип элемента, его конкретное название, или довольно гибко определить целый класс подходящих под шаблон элементов. Я не буду приводить здесь полного описания шаблонов, ты найдешь его на нашем диске среди большого числа полезных документов, которые тебе настоятельно советую изучить.

Третьей строчкой файла преобразований я вывожу в пределах тега h1 содержимое атрибута элемента с именем xa. Тут следует пояснить, что мы работаем в рамках шаблона, указывающего на корневой элемент (он обозначается символом “/”) и поэтому элемент xa – наш прямой потомок. Легко понять, что доступ к атрибутам какого-то элемента осуществляется при помощи конструкции element/@var.

На пятой строке XSL-файла я вывожу тэг table, поскольку мне захотелось оформить файл в виде таблицы. Затем, при помощи элемента xsl:for-each, я организую своеобразный цикл по всем записям со статьями и вывожу информацию о них, форматируя в колонки таблицы при помощи тэгов <tr> и <td>. Обрати внимание, что в рамках цикла содержимое элементов получается так же, как и в обычном случае - при помощи элемента xsl:value-of.

[обработка на стороне сервера]

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

Представь, что ты получаешь XML-данные внутри своего скрипта и тебе надо отформатировать их и вставить полученный html-код в генерируемую страницу. Разумеется, в этом случае использовать клиентский парсер не получится. Как же быть? Ну, разумеется, крутые парни из команды php-девелоперов все уже сделали до нас!

Начиная с версии 4.0.3 доступна функция xslt_process, которая производит трансформацию XML-данных в html-разметку по XSLT-правилам. Пользоваться ей чрезвычайно просто:

Использование xslt_process

<?php

$arguments = array(

'/_xml' => $xml,

'/_xsl' => $xsl

);

$xh = xslt_create();

$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);

if ($result) {

echo "Результат преобразования:<pre> $result </pre>\n";

}

xslt_free($xh);

?>

[свой RSS-клиент]

Задача на самом деле элементарная и сводится к следующему. Hеобходимо при помощи функции fopen() получить содержимое rss-ленты в специальный буфер, а затем, при помощи функции xslt_process применить к этим данным XSLT-преобразование, чтобы получить на выходе готовую html-страницу. Oсновная сложность здесь заключается как раз в том, чтобы разработать XSL-файл. Вообще говоря, RSS – довольно изощренный формат и реализовать его полную поддержку не так легко. Однако сделать поддержку самых популярных тегов ты сможешь очень быстро, даже действуя просто по аналогии с разобранным выше примером.

seo & website usability   inet   os faq   hardware faq   memory   video   cpu   hdd   mainboard faq   printer & scaner   modem   mobiles   hackzone

Технологии поискового маркетинга
Практика поискового маркетинга
Flash
Тэги
XML
DHTML
PHP
MySQL
WebMail
.NET
VBScript
CGI
Графические форматы Интернета
WEB-сайт шаг за шагом
CMS faq
FRAME faq
CSS faq
SSI faq
RSS faq
WAP faq
Web-Designed
Webhints
Файл настроек .htaccess
Настройка robots.txt
Windows 10 | Registry Windows 10 | Windows7: Общие настройки | Windows7: Реестр | Windows7: Реестр faq | Windows7: Настроки сети | Windows7: Безопасность | Windows7: Брандмауэр | Windows7: Режим совместимости | Windows7: Пароль администратора | Память | SDRAM | DDR2 | DDR3 | Quad Band Memory (QBM) | SRAM | FeRAM | Словарь терминов | Video | nVIDIA faq | ATI faq  | Интегрированное видео faq | TV tuners faq | Терминология | Форматы графических файлов | Работа с цифровым видео(faq) | Кодеки faq | DVD faq | DigitalVideo faq | Video faq (Архив) | CPU | HDD & Flash faq | Как уберечь винчестер | HDD faq | Cable faq | SCSI адаптеры & faq | SSD | Mainboard faq | Printer & Scaner | Благотворительность

На главную | Cookie policy | Sitemap