Як влаштований формат RSS

Повільно пихкаючи, технологія RSS починає розгортатися в Рунеті, приносячи перші практичні результати … і тут з’ясовується, що мало хто знає, що таке RSS, і ще менше – навіщо він потрібен (яка від нього практична користь).

Що ж таке – RSS? Хтось думає, що RSS – це спосіб реплікації контенту, хтось – що це спосіб обміну контентом. Нічого подібного. Ключове слово в RSS НЕ replication , НЕ exchange , а syndication .

Syndication – це об’єднання різноманітного контенту, фізично знаходиться на різних серверах, в одну логічну крапку, створюючи ефект присутності на кількох сайтах одночасно. Оскільки таких логічних точок може бути багато, то з боку користувача технологія RSS працює на принципі p2p. Крім того, syndication організований так, що створюється ілюзія : Чи не ви ходите на сайти, а сайти самі приходять до вас.

Користуватися RSS дуже просто. Завантажуєте і встановлюєте собі програму. Вказуєте адреси, що вас цікавлять RSS фідів (RSS feeds) або вибираєте з каталогу. Далі програма сама подбає про актуальність, відстежуючи поновлення фідів RSS.
Замість того, щоб самому повзати по сайтах в пошуках чогось нового, ви отримуєте зведену інформацію до себе на комп’ютер – повзати буде feed reader. Якщо якась запис зацікавила – можна пройти на сайт (блог), щоб прочитати запис в оригінальному (повному) вигляді.
Можна не обмежуватися своїм комп’ютером, а обробляти RSS фіди на сервері скриптами. І викладати для публічного доступу.

Як це влаштовано? RSS – це файл, який експортує новини та останні оновлення сайту (блогу). Щоб не перевантажувати цей файл, в нього, як правило, включаються заголовки і один-два абзаци статті, новини або запису блогу. Разом з тим, RSS – це не тільки своєрідний (xml-like) формат файлу, а й ідея – syndication. Генератори контенту експортують, а споживачі – імпортують інформацію. Всі разом – це кругообіг інформації в Мережі, включаючи зворотний зв’язок.

Що стосується масової концентрації RSS фідів і обробки їх для кінцевого користувача (при цьому користувач формує стрічку з доступного йому безлічі RSS) як сервісу, то цим займається тільки MyYandex. Колись давно подібну ідею намагався впровадити NewMail для свого ком’юніті. Називалося це канал і виглядало як новинний блок з трьох полів: заголовок, лінк і коротке пояснення. Редагувати канал міг тільки власник, а решта – вставляли канал в свою стартову сторінку користувача сервісу.
Правда, після чергового апгрейда ці канали кудись пропали.

Таким чином технологія RSS дає можливість кожному сформувати власний інформаційний простір, інформаційний блок, доступний не тільки власнику.

В якості програми для збору і читання RSS фідів на своєму комп’ютері (персональний аггрегатор) можна використовувати FeedReader. Але я хотів би натякнути про іншої, нової і більш зручною програмі – ActiveRefresh. Вона дозволяє:
– читати RSS фіди, відстежуючи зміни через вказаний період часу *
– відслідковувати зміни на веб-сайтах. Система фільтрів дозволяє виводити зміни (або стрічку новин сайту) в зручному для вас вигляді
– процитувати цікаву новину в LiveJournal: ActiveRefresh може виступати клієнтом для LJ та блогів.

Автор: Вадим Артамонов

Що таке RSS?

Автор: 2002 (c) Mark Pilgrim і XML.com
переклад: Олександр Качанов

RSS це формат, призначений для публікації новин на новинних і подібних їм сайтах, починаючи від таких провідних новинних сайтів, як Wired, Slashdot і закінчуючи особистими мережевими щоденниками (weblog-ами). Але по суті, публікувати можна не тільки новини. Практично будь-який матеріал, який можна розділити на окремі частини, можна публікувати за допомогою RSS: наприклад, оголошення про останні публікації в wiki, інформація про оновлення в CVS, історія змін, внесених до книги. Після того, як інформація перетворена у формат RSS, програма, що розуміє цей формат, може витягати відомості про внесені зміни і залежно від результату, наприклад, автоматично робити які-небудь дії.

Програми, що вміють працювати з RSS, називаються агрегаторами і вони дуже популярні серед людей, ведуть мережеві щоденники (weblog-и). Деякі програми-щоденники навіть дозволяють іншим робити коментарі до записів. І багато щоденників уміють публікувати записи у форматі RSS. Програма-агрегатор дозволяє вам збирати всі ці публікації разом, і ви отримуєте можливість одночасно стежити за появою нових новин на всіх сайтах відразу і читати їх короткий зміст, не відвідуючи кожен сайт окремо.

Коротка історія

Програмісти, будьте пильні! Під терміном RSS ховається формат, який розпався на декілька різних версій як мінімум двох різних (але що існують одночасно) форматів. Початковий RSS, версію 0.90, розробили в компанії Netscape. Це був формат, призначений для створення інформаційних порталів провідних компаній. Оскільки багато хто порахував його дуже складним, компанія Netscape розробила простішу версію – 0.91, яку, втім, закинула, втративши всякий інтерес до бізнесу порталів. Але версія 0.91 була передана на поруки компанії UserLand Software, яка збирається використовувати цей формат як основу для своїх weblog-продуктів і інших web-додатків.

Тим часом, третя, вже некомерційна організація, відколовшись від загальної течії, створила новий формат, який, як вважалося, відповідає духу і принципам початкового формату RSS 0.90 (тобто до того, як він був спрощений 0.91). Цей формат, заснований на мові RDF, назвали RSS 1.0. На жаль, компанія UserLand не брала участі в розробці цього нового формату, і як захисник спрощеної версії 0.90 вона не була щасливою, коли з’явився формат RSS 1.0. Замість прийняття цього формату UserLand вирішила розвинути вітку 0.9х і створила версії 0.92, потім 0.93, 0.94 і нарешті 2.0.

Ось такий вінегрет.

Так яким же форматом користуватися?

Отже, існує 7 – тільки подумайте 7! – Різних форматів, і всі вони називаються RSS. Як програмісту, що пише програму-агрегатор, вам доведеться битися з усіма цими форматами. Ну а який формат вибрати користувачу, що публікує свої новини у форматі RSS?

Версії RSS та рекомендації

Версія Власник За Статус Поради
0.90 Netscape Скасовано версією 1.0 Не користуйтеся
0.91 UserLand Дуже-дуже простий Офіційно відмінений з виходом 2.0. Але усе ще популярний Користуйтеся для простих публікацій. Якщо вам знадобиться більше, ви легко зможете перейти на 2.0
0.92, 0.93, 0.94 UserLand Більше можливостей, ніж у 0.91 Скасовано з виходом версії 2.0 Користуйтесь версією 2.0
1.0 RSS-DEV Working Group Заснований на мові RDF. Розширюється за допомогою модулів. Не залежить від будь-якої однієї компанії Стабільний. Ведеться активна розробка модулів Використовуйте для додатків, де використовується RDF, або в тому випадку, якщо вам потрібен якийсь певний модуль
2.0 UserLand Розширюється за допомогою модулів. Простий при міграції з гілки форматів 0.9х Стабільний. Ведеться активна розробка модулів Використовуйте для публікації новин загального призначення

Як виглядає RSS?

Скажімо, ви захотіли написати програму, яка зчитує новини у форматі RSS, щоб, наприклад, публікувати заголовки новин на своєму сайті, або щоб створити портал новин і так далі. Як виглядає RSS-файл? Все залежить від того, про яку версію RSS йде мова. Ось приклад файлу в форматі RSS 0.91 (урізана версія новин з http://www.xml.com/):

http://www.xml.com/
XML.com features a rich mix of information and services for the XML community.
en-us

http://www.xml.com/pub/a/2002/12/04/normalizing.html
In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.

http://www.xml.com/pub/a/2002/12/04/som.html
Priya Lakshminarayanan describes in detail the use of the. NET Schema Object Model for programmatic manipulation of W3C XML Schemas.

http://www.xml.com/pub/a/2002/12/04/svg.html
In this month s SVG column, Antoine Quint looks back at SVG s journey through 2002 and looks forward to 2003.

Все просто, правда? Блок новин (channel) складається із заголовка, посилання, даних про мову новин і опису. Після цього йде список самих новин, де в кожному пункті вказується заголовок, посилання і короткий опис новини.

Тепер давайте поглянемо, як та ж сама інформація виглядає у форматі RSS 1.0:

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/
>

http://www.xml.com/
XML.com features a rich mix of information and services for the XML community.
en-us

http://www.xml.com/pub/a/2002/12/04/normalizing.html
In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.
Will Provost
2002-12-04

http://www.xml.com/pub/a/2002/12/04/som.html
Priya Lakshminarayanan describes in detail the use of the. NET Schema Object Model for programmatic manipulation of W3C XML Schemas.
Priya Lakshminarayanan
2002-12-04

http://www.xml.com/pub/a/2002/12/04/svg.html
In this month s SVG column, Antoine Quint looks back at SVG s journey through 2002 and looks forward to 2003.
Antoine Quint
2002-12-04

Досить багатослівно, чи не так? Ті, хто знайомий з RDF, відразу дізнаються, що цей файл – RDF-документ, збережений в XML. Решта, розберуться, що у файлі представлена вся та ж інформація, що і в першому прикладі. Ми тільки додали ще деяку додаткову інформацію, як, наприклад, авторство кожної новини, і дату публікації, яких немає в RSS 0.91.

Незважаючи на те, що RSS 1.0 є сумішшю RDF і XML, структурно він схожий з попередніми версіями RSS – схожий достатньо, щоб ми розглядали його як звичайний XML-файл. Отже ми можемо написати одну програму, яка вміє отримувати інформацію з обох форматів: і з RSS 0.91 і з RSS 1.0. Однак є все-таки деякі відмінності, про які ваша програма повинна знати:

  1. Кореневим елементом в RSS 1.0 є rdf: RDF, а не rss. Вам або доведеться явно обробляти обидва ці елементи, або просто ігнорувати їх і сліпо витягувати тільки ту інформацію, яка вам потрібна.
  2. У RSS 1.0 використовуються простори імен (namespaces). Простір імен для RSS 1.0 виглядає так http://purl.org/rss/1.0/. І цей простір приймається за умовчанням. Крім того у файлі використовуються простори імен http://www.w3.org/1999/02/22-rdf-syntax-ns # для елементів, специфічних для RDF (ми їх теж можемо ігнорувати), і http://purl. org/dc/elements/1.1 / (Dublin Core) для додаткових метаданих про авторів статей і дати публікацій.

    Ви можете піти двома шляхами: якщо ваш XML-парсер не розуміє простору імен, ви можете просто вважати, що у файлі використовуються елементи з префіксами і сліпо шукати в них елементи items і dc: creator. Такий спосіб спрацює в більшості випадків, оскільки в новинах формату RSS 1.0 найчастіше використовується тільки простір імен, прийнятий за замовчуванням, і простір імен Dublin Core. Звичайно, даний спосіб – не елегантний, адже немає ніяких гарантій, що в яких-небудь новинах не буде використано яке інше простір імен (що цілком легально з погляду RDF і XML). І ваш парсер пропустить всі новини.

    Якщо ж ваш XML-парсер розуміє простори імен, ви можете побудувати витонченіше рішення, яке зуміє розібрати новині і форматі 0.91 і у форматі 1.0.

  3. Менш очевидний, але важливий факт полягає в тому, що в RSS 1.0 елементи item знаходяться поза елементом channel. У RSS 0.91 елементи item розташовані усередині channel. У 0.90 вони були зовні. У 2.0 – вони всередині. По-як! Чи не заплутайтеся з тим, в якому елементі треба шукати новини.
  4. Нарешті, ви помітите, що в елементі channel є один елемент items. Він потрібен тільки для RDF-парсерів (задає порядок новин). Ви можете його ігнорувати і вважати, що всі новини йдуть в тому порядку, в якому розташовані елементи item.

А як виглядає формат RSS 2.0? На щастя, для програм, що розуміють формати RSS 0.91 і 1.0, формат RSS 2.0 буде простіше простого.

http://www.xml.com/
XML.com features a rich mix of information and services for the XML community.
en-us

http://www.xml.com/pub/a/2002/12/04/normalizing.html
In this second and final look at applying relational normalization techniques to W3C XML Schema data modeling, Will Provost discusses when not to normalize, the scope of uniqueness and the fourth and fifth normal forms.
Will Provost
2002-12-04

http://www.xml.com/pub/a/2002/12/04/som.html
Priya Lakshminarayanan describes in detail the use of the. NET Schema Object Model for programmatic manipulation of W3C XML Schemas.
Priya Lakshminarayanan
2002-12-04

http://www.xml.com/pub/a/2002/12/04/svg.html
In this month s SVG column, Antoine Quint looks back at SVG s journey through 2002 and looks forward to 2003.
Antoine Quint
2002-12-04

Як показує даний приклад, в RSS 2.0 теж використовуються простори імен, як і в RSS 1.0. Але це не RDF. Як і в RSS 0.91, немає простору імен, прийнятого за замовчуванням, а новини (в елементах item) розміщені знову в елементі channel.

Comments are closed.