From: Егор Наклоняев <http://naklon.debilarius.ru>
Date: Mon, 2 Aug 2004 14:31:37 +0000 (UTC)
Subject: Немного о OPML (формат для создания списка RSS каналов)
После того, как Вы создали на сайте несколько собственных RSS-каналов
(о создании RSS каналов и что это такое, на примере RSS 2.0 читайте
здесь http://naklon.debilarius.ru/texts/sleep/rss.htm), либо хотите
создать список RSS-каналов своих друзей и знакомых, то при увеличении
списка описывать каждый из них в заголовке становится непродуктивно.
Делать же список на каждой странице также не выход: поскольку,
во-первых, это будет SPAM в чистом виде, т.е. информация не
затребованная пользователем, а, во-вторых, это увеличивает размер
страницы. Но есть решение.
Для создания списка каналов RSS на настоящий момент существуют два
формата: OCS (Open Content Syndication) и OPML (Outline Processor
Markup Language). Оба из них базируются на языке XML. Разница между
этими форматами примерно такая же, как и между RSS 1.0 и 2.0, поэтому
для формирования вручную наиболее удобным, по моему мнению, будет всё
же OPML. OPML - это достаточно старый формат, и его основное
предназначение было описание структур, подобных каталогам на диске.
Рассмотрим, для примера, файл, описывающий на сайте debilarius.ru
каналы партнеров Рыбца.
<title>Рыбец и его друзья</title>
<dateCreated>Sat, 20 Dec 2003 15:00:00 GMT</dateCreated>
<dateModified>Sat, 20 Dec 2003 18:00:00 GMT</dateModified>
<ownerName>Egor Naklonyaeff</ownerName>
<ownerEmail>chyduskam@debilarius.ru</ownerEmail>
</head>
<body>
<outline type="rss" title="Рыбка дебиляриус"
description="Нечто умственно иное"
xmlUrl="http://debilarius.ru/rss/"
htmlUrl="http://debilarius.ru/" />
<outline type="rss" title="Портал Егора Наклоняева"
description="Сайт Егора Наклоняева и Сигизмунда Траха, людоведов и
душелюбов, а также их единочаятелей. Сайт посвящен наклону, его
пропаганде и практическому применению."
xmlUrl="http://naklon.debilarius.ru/rss/"
htmlUrl="http://naklon.debilarius.ru/" />
<outline type="rss" title="Провод.ком Валерий Тихонов-НеТОТ, личный орган" d
escription="Литературо-краеведческий набор файлов.
Практического интереса не представляет. Содержится на средства
налогонеплательщиков" xmlUrl="http://provod.com/rss.xml"
htmlUrl="http://www.provod.com/" />
</body>
</opml>
Итак, разберём по порядку. Первая строка говорит нам о том, что это
XML версии 1.0, и что для разбора его необходимо использовать
кодировку [47]windows-1251. Вторая строка открывает тэг opml с
обязательным атрибутом version. Данный элемент состоит из двух
обязательных элементов: head и body. Элемент head может быть пустым, а
может содержать нижеследующие элементы, описывающий данный документ:
* <title> - общий заголовок документа
* <dateCreated> - дата создания документа
* <dateModified> - дата последнего изменения документа
* <ownerName> - строка, описывающая владельца данного документа
* <ownerEmail> - адрес электронной почты владельца.
Остальные элементы, упомянутые в спецификации, как то
<expansionState>, <vertScrollState>, <windowTop>, <windowLeft>,
<windowBottom> и <windowRight> для наших целей не нужны. Подробнее о
них, см. спецификацию OPML (http://opml.scripting.com/spec)
Обратите внимание на дату, она должна быть обязательно в стандарте
RFC 822, т.е. с указанием дня недели и часового пояса. Для Москвы
и Санкт-Петербурга, часовой пояс +0300. Таким образом: Sat, 20 Dec
2003 15:00:00 GMT - то же самое, что Sat, 20 Dec 2003 18:00:00 +0300.
Допустимо оба написания.
Что же касается элемента body, то с ним сложнее. Подробной
спецификации на него нету, поэтому опишу элементы из существующей
практики его применения в Интернет. Данный элемент состоит из любого
количества элементов <outline>. Вложения в данный элемент других
элементов, хоть и допускаются стандартом при описании документов
такого типа, не поддерживается большинством агрегаторов. Каждый
элемент содержит следующие желательные атрибуты:
* type - тип элемента, пишем "rss".
* title - в данном случае, название RSS-канала. Соответствует
элементу <title> элемента <channel> для RSS 2.0
* description - краткое описание канала. Соответствует элементу
<description> элемента <channel> для RSS 2.0
* xmlUrl - ссылка на канал в виде RSS
* htmlUrl -ссыка на HTML-страницу данного канала. Соответствует
элементу <link> элемента <channel> для RSS 2.0
Сохраним полученный результат в виде файла с расширением .opml и
перейдем к настройке сервера. Серверу необходимо сообщить, что есть
такое расширение. Это делается у сервера Apache, например, простым
добавлением строки:
AddType text/xml opml
в фаил .htaccess. Если всё это для Вас китайская грамота, то просто
сохраните файл с расширением .xml, типа myfriends.xml и забудьте, что
я только что говорил.
После того, как мы сохранили файл и выложили его на сервер, необходимо
сообщить пришедшим на сайт, что у нас есть opml. Для страницы в
формате HTML это делается следующим элементом секции <head>:
Замените http://naklon.debilarius.ru/debilarius.opml своей ссылкой и
наслаждайтесь результатом. Для таких агрегаторов, как например
NewzCrawler (http://www.newzcrawler.com/) этого более чем достаточно.
Для менее продвинутых, можно поставить данную ссылку на кнопку или
сделать её в текстовом виде, но это уже совсем другая история...