Генератор форм

Баннер

Для веб-мастера

Реклама


10 главных ошибок при создании RSS-канала

Рейтинг:
Дата: 26 апреля 2010 Просмотры 10388

RSS icon

Постовой: нужны шины и диски на Ваше авто? Тогда посетите сайт sm-tyres.ru Всегда в наличии большой ассортимент литых дисков европейского производства с гарантией 5 лет

Сегодня RSS используется очень и очень часто, и все больше пользователей начинают ценить этот великолепный инструмент получения свежих новостей. И, конечно же, очень многие сайты предоставляют свои RSS-каналы пользователям. Но, к сожалению, нередко в этих каналах встречаются досадные ошибки, которые сводят «на нет» всё удобство и прелесть RSS. Здесь мы рассмотрим наиболее «популярные» ошибки, встречаемые нами на различных ресурсах.

1. Синтаксические ошибки RSS потока

Многие разработчики забывают о том, что RSS — это, прежде всего, XML. А XML-документы изначально «не прощают» ошибки, так как большинство XML анализаторов работают по принципу: «Или этот XML документ не нарушает синтаксис, или это не XML». В отличие от HTML, DOM анализатор обязан отказаться от разбора XML документа, если в документе есть ошибки. Поэтому контролировать синтаксис своего RSS просто необходимо! Существуют множество инструментов для проверки RSS-каналов, но, пожалуй, самый популярный — http://feedvalidator.org/

Рекомендация: используйте RSS агрегатор, чувствительный к ошибкам. Многие RSS агрегаторы могут игнорировать ошибки, используя не XML DOM парсер (который, как мы отметили, обязан отказаться от анализа в случае ошибки), а свои собственные, но большинство всё же используют именно DOM парсер. Вот пример такого агрегатора: RSS Bandit. Установите этот бесплатный агрегатор к себе на компьютер и подпишитесь в нём на собственный RSS канал. Если у вас возникнут ошибки, вы узнаете о них первым!

2. Использование спец.символов HTML в заголовках или описаниях элементов RSS

Очень распространенная ошибка! Веб-мастера очень привыкли использовать так называемые спец. символы типа   " и др. Ну и понятно, если RSS лента генерируется автоматически (что бывает в 99.9% случаев), то такие символы попадают в заголовок элемента или в его описание, например:

<item>
<title>&nbsp;Вот моя &quot;новость&quot;</title>
<pubDate>Thu, 19 Feb 2009 09:00:47 +0300</pubDate>
<link>http://www.mysite.ru/item1</link>
<description>&nbsp;Это моя &quot;новость&quot;</description>
<guid>http://www.mysite.ru/item1</guid>
</item>

Формально &nbsp; и другие сущности не определены в XML разметке, что приводит к неизбежным ошибкам вашей ленты. Как этого избежать?

Рекомендация 1: Если вы используете автоматическую генерацию RSS, заключайте содержимое элементов title и description в секции CDATA, например:

<item>
<title><![CDATA[[&nbsp;Вот моя &quot;новость&quot;]]></title>
<pubDate>Thu, 19 Feb 2009 09:00:47 +0300</pubDate>
<link>http://www.mysite.ru/item1</link>
<description>
<![CDATA[[&nbsp;Это моя &quot;новость&quot;]]>
</description> <guid>http://www.mysite.ru/item1</guid> </item>

Рекомендация 2: Вообще-то, может быть имеет смысл выглянуть в окошко и заметить, что на дворе уже как 9-й год идёт во всю XXI век, век юникода. И также имеет смысл не заменять специальные символы на их HTML-представление, а просто их использовать в своих текстах. Например, если вам нужны кавычки, просто набирайте их в своей ленте (это символы набираются как Alt+0171 и Alt+0187):

<item>
<title>Вот моя «новость»</title>
<pubDate>Thu, 19 Feb 2009 09:00:47 +0300</pubDate>
<link>http://www.mysite.ru/item1</link>
<description>Это моя «новость»</description>
<guid>http://www.mysite.ru/item1</guid>
</item>

Если нужен неразрывный пробел — просто его поставьте как символ Alt+0160 (U+ 00A0)

Более подробно см. здесь:

3. HTML теги в description

Самый распространенный случай! Вообще-то, это — не ошибка, но всё же, неточность. Формально, элемент description — это краткое текстовое описание вашей новости. Мы знаем, что HTML и XML не совместимы просто синтаксически (XHTML — пожалуйста, но не HTML), и прямое использование HTML в description формально нарушает грамматику RSS. Поэтому в спецификации RSS читаем: «допускается использование только экранированной разметки HTML» («An item may also be complete in itself, if so, the description contains the text (entity-encoded HTML is allowed)»)

<description>this is &lt;b&gt;bold&lt;/b&gt;</description>

Но, всё же, я не рекомендую так поступать. Дело в том, что есть агрегаторы, которые считают содержимое элемента description текстом и выводят его как текст, не воспринимая его внутреннюю разметку. И в результате пользователь увидит примерно следующее:

this is &lt;b&gt;bold&lt;/b&gt;

Понятно, такой текст прочитать невозможно. Я однажды озадачился идеей поставить себе скринсейвер Windows, который бы показывал новости из RSS потоков. И в результате я отказался от этой идеи — они все показывали новость именно в таком виде!

Рекомендация: В элементе description используйте только текст. А форматированный текст пишите, используя расширения RDF Site Summary Modules, например, вот так (обратите внимание на объявление пространства имен с префиксом content):

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
	<!-- ... -->
<item> <title>Вот моя «новость»</title> <pubDate>Thu, 19 Feb 2009 09:00:47 +0300</pubDate> <link>http://www.mysite.ru/item1</link> <description>Это моя «новость»</description> <guid>http://www.mysite.ru/item1</guid> <!-- Здесь полный и HTML форматированный текст элемента --> <content:encoded>
<![CDATA[<p>What a <em>beautiful</em> day!</p>]]>

</content:encoded>
</item> <!-- ... --> </channel> </rss>

Такой способ понимается практически всеми RSS агрегаторами (мне известен только один распространенный агрегатор, который не понимает такое расширение — встроенный в FireFox)

4. Неправильная разметка в HTML

При представлении форматированного текста в RSS многие Веб-мастера пытаются перенести в RSS элемент чуть ли не весь дизайн своего сайта. Так вот, этого делать не следует. Дело в том, что каждый RSS агрегатор отображает элементы RSS по-своему, и вы не знаете, каким именно агрегатором будет пользоваться ваш пользователь: это может быть и desktop-агрегатор, такой как RSS bandit, и online-агрегатор, как Goole Reader или Яндекс.Лента, или вообще агрегатор на мобильном телефоне. У каждого из них свои возможности, и ваша красивая верстка колонками может просто не вписаться в экран пользователя.

Рекомендация: используйте следующие простые правила:

  1. Никогда не фиксируйте ширину текста своего элемента — пусть текст заполняет все доступное пространство
  2. Никогда явно не указывайте размер шрифта в абсолютных единицах, например, px, pt. Лучше использовать либо em, ex, или относительные размеры, например, 80%
  3. Никогда явно не указывайте цвет фона и желательно не указывайте цвет шрифта (ссылок и т.п.). У агрегатора может быть свой фон (например, темный) и указанный вами цвет шрифта начнет с ним сливаться.
  4. Никогда не используйте колонки текста, опять же — представление текста отдайте на откуп агрегатору

5. Неправильное расширение RSS

Как и любой язык, базирующийся на XML, RSS великолепно расширяется. Но следует с осторожностью к этому относиться, так как никакие ваши собственные расширения не будут правильно понятыми практически всеми стандартными агрегаторами.

Например, вот Росбалт:

<item>
<title>
По делу грабителей, похитивших 43 млн рублей, проверяет лиц, знавших о сделке </title> <link>http://www.rosbalt.ru/2009/02/23/620591.html</link> <category/> <section>Главная лента</section> <pubDate>Mon, 23 Feb 2009 19:42:00 +0300</pubDate> <full-text>
МОСКВА, 23 февраля. Следователи в рамках уголовного ....
</full-text>
</item>

Легко увидеть, что, с одной стороны, разработчики «забыли» про обязательный элемент description, но добавили свои элементы section и full-text, чем формально нарушили стандарт.

Читаем в спецификации: «Канал RSS 2.0 может содержать элементы и атрибуты, не упомянутые на этой странице, только если они определены в своих пространствах имен.»

То есть, в данном случае мы можем решить эту проблему следующим образом: полный текст вынести на элемент content:encoded как рекомендовано в совете №3, а раздел новости указать хотя бы так:

<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:rosbalt="http://www.rosbalt.ru/my-rss-schema"> <channel> <item> <title>
По делу грабителей, похитивших 43 млн рублей, проверяет лиц, знавших о сделке </title> <link>http://www.rosbalt.ru/2009/02/23/620591.html</link> <category/> <rosbalt:section>Главная лента</rosbalt:section> <pubDate>Mon, 23 Feb 2009 19:42:00 +0300</pubDate> <content:encoded>МОСКВА, 23 февраля. ....</content:encoded> </item> </channel> </rss>

Здесь мы ввели свое пространство имен и элемент section вынесли в него.

Рекомендация: при расширении RSS своими элементами всегда объявляйте свои пространства имен или используйте существующие схемы.

6. Отсутствие элемента GUID

Несмотря на то, что элемент guid не является обязательным, тем не менее подавляющее число агрегаторов используют его для идентификации элемента. Если в вашем RSS потоки элементы item не будут иметь guid, есть вероятность того, что агрегатор будет загружать одни и те же элементы повторно. Например, так ведет себя RSS-Hub на коммуникаторах HTC Touch Cruise.

Рекомендация: всегда явно указывайте уникальный guid у каждого из элементов RSS.

7. Неправильное указание даты элемента

У элемента item, как правило, присутствует дата публикации, указанная с помощью элемента pubDate. Так вот, эта дата указывается не в формате RFC822, то есть так:

<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>

Рекомендация: обязательно проверяйте в каком формате вы передаёте дату.

8. Неправильная ссылка на RSS в HTML странице

Добавив к себе на сайт RSS поток (или несколько потоков), не забудьте указать браузерам, что эти RSS потоки у вас есть. Заметьте, это делается не просто ссылкой на странице (хотя и ссылка на странице не помешает), а объявлением в разделе head вашего HTML:

<head>
...
<link rel="alternate" type="application/rss+xml"
title="Мой сайт: новости" href="http://www.mysite.ru/rss.xml" />

<link rel="alternate" type="application/rss+xml"
title="Мой сайт: комментарии к заметкам" 
href="http://www.mysite.ru/comments.xml" />
... </head>

Обратите внимание на атрибут title элемента link. Это название вашего RSS потока. Крайне желательно указать там внятное название вашего канала, а не просто безликое «RSS 2.0». Вообще, многие любят одновременно указывать несколько форматов, например, RSS 0.9, RSS 1.0, RSS 2.0, Atom. Я, честно говоря, считаю это, как бы помягче выразится, снобизмом. Ну зачем одновременно предлагать пользователю несколько практически идентичных форматов? Скажите, вы сами можете вот так, на вскидку, называть отличия RSS 1.0 от RSS 2.0? А вы думаете пользователь об этом знает? Ничего подобного! Поэтому лучше выбрать один формат и использовать его, тем более все агрегаторы, как правило, легко понимают эти форматы.

Рекомендация: выберите для себя наиболее приемлемый формат (RSS 2.0 или Atom) и придерживайтесь только его. Явно укажите ссылку на RSS поток на всех страницах сайта с помощью элемента link. Не забудьте написать внятный заголовок своего RSS.

9. Бестолковое использование виджетов в разметке элемента

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

Пример виджетов

Так вот, это уже не снобизм, а скорее — дебилизм! Нет, на сайте размещайте виджеты сколько угодно! Но зачем пихать 26 картинок к КАЖДОЙ ЗАПИСИ своего блога, к КАЖДОЙ НОВОСТИ своего сайта, то есть в RSS, если учесть, что пользователь УЖЕ ЧИТАЕТ ваш RSS с помощью своего любимого агрегатора! То есть, пользователь уже подписался на ваш канал, и эти ссылки ему попросту не нужны!

Рекомендация: виджеты подписки на ваш RSS размещайте на сайте, а не в тексте самих элементов RSS.

10. Полнота изложения

Ну и самая, пожалуй, распространенная «ошибка» — неполный текст новости/заметки и т.п. в RSS. Вы наверняка замечали, что большинство RSS передаются в виде анонсов, то есть не содержат в себе полный текст материала. Здесь в принципе существует несколько диаметрально противоположных точек зрения: например, некоторые считают, что пользователя нужно «подразнить», показав ему только лишь часть заметки и тем самым заставив его щелкнуть по ссылке «Читать далее» и перейти на сайт. Что ж, по-своему приверженцы такого подхода правы.

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

Важно помнить, что наша основная задача при публикации RSS — обеспечить постоянную читающую аудиторию сайта, а не увеличить посещаемость! Ведь пользователь, постоянно читающий ваш RSS, относится к вашему сайту с бо?льшей степенью доверия, чем просто к сайту, и важно не отпугнуть такого пользователя.

Поэтому рекомендация: публикуйте в RSS материалы полностью! Ну разве что, исключение составляет статья объемом более 10 – 20 машинопечатных страниц… Если, конечно же, вы такие статьи пишете.

Таким образом, мы видим, что RSS — это великолепная штука, особенно если его правильно подать. Успехов вам!

Некоторые полезные ссылки:

Источник статьи: http://www.ininfo.biz

Оцените эту статью:
ТЕГИ:
Похожие статьи
Интересно почитать

    Получать новые материалы этого сайта на свой email адрес?

    Отправлять мне комментарии по эл. почте?

Реклама

Баннер

Топ комментаторы

Нашли ошибку в тексте

Система Orphus
https://biznesguide.ru/other/103.html
3 из 5 на основе 2 оценок.
Твиттер Facebook Google plus RSS