Що таке 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.

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

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

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

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

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

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

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

  1. Кореневим елементом в RSS 1.0 є rdf: RDF, а не rss. Вам або доведеться явно обробляти обидва ці елементи, або просто ігнорувати їх і сліпо витягувати тільки ту інформацію, яка вам потрібна.

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

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

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

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