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 - тільки подумайте сім! - різних форматів, і всі вони називаються RSS. Як програмісту, що пише програму-агрегатор, вам доведеться битися зі всіма цими форматами. Ну а який формат вибрати користувачу, що публікує свої новини у форматі RSS?
Версії RSS та рекомендації |
||||
| Версія | Власник | За | Статус | Порада |
| 0.90 | Netscape | Відмінений версією 1.0 | Obsoleted by 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.9x версій | Стабільний. Ведеться активна розробка модулів | Використовуйте для публікації новин загального призначення |
Скажімо, ви захотіли написати програму, яка прочитує новини у форматі RSS, щоб, наприклад, публікувати заголовки новин на своєму сайті, або щоб створити портал новин і так далі. Як виглядає RSS-файл? Все залежить від того, про яку версію RSS йде мова. Ось приклад файлу у форматі RSS 0.91 (версія новин з http://www.xml.com):
<rss version="0.91">
<channel>
<title>XML.com</title>
<link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML community.</description>
<language>en-us</language>
<item>
<title>Normalizing XML, Part 2</title>
<link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>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.</description>
</item>
</channel>
</rss>
Все просто, правда? Блок новин (channel) складається із заголовка, посилання, даних про мову новин і опису. Після цього йде список самих новин, де в кожному пункті указується заголовок, посилання і короткий опис новини.
Тепер давайте поглянемо, як та ж сама інформація виглядає у форматі RSS 1.0:
<rdf:RDF
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/">
<channel rdf:about="http://www.xml.com/cs/xml/query/q/19">
<title>XML.com</title>
<link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML community.</description>
<language>en-us</language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/normalizing.html"/>
<rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/som.html"/>
<rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/svg.html"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.xml.com/pub/a/2002/12/04/normalizing.html">
<title>Normalizing XML, Part 2</title>
<link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>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.</description>
<dc:creator>Will Provost</dc:creator>
<dc:date>2002-12-04</dc:date>
</item>
</rdf:RDF>
Досить багатослівно, чи не так? Ті, хто знайомий з RDF, відразу дізнаються, що цей файл - RDF-документ, збережений в XML. Інші, розберуться, що у файлі представлена вся та ж інформація, що і в першому прикладі. Ми тільки додали ще деяку додаткову інформацію, як, наприклад, авторство кожної новини, і дату публікації, яких немає в RSS 0.91.
Не дивлячись на те, що RSS 1.0 є сумішшю RDF і XML, структурно він схожий з попередніми версіями RSS - схожий достатньо, щоб ми розглядали його як звичайний XML-файл. Отже ми можемо написати одну програму, яка уміє витягувати інформацію з обох форматів: і з RSS 0.91 і з RSS 1.0. Проте є все-таки деякі відмінності, про які ваша програма повинна знати:
Ви можете піти двома шляхами: якщо ваш XML-парсер не розуміє простору імен, ви можете просто вважати, що у файлі використовуються елементи з префіксами і сліпо шукати в них елементи items і dc:creator. Такий спосіб спрацює в більшості випадків, оскільки в новинах формату RSS 1.0 найчастіше використовується тільки простір імен, прийнятий за замовчуванням, і простір імен Dublin Core. Звичайно, даний спосіб - не елегантний, адже немає ніяких гарантій, що в яких-небудь новинах не буде використано який-небудь інший простір імен (що цілком легально з погляду RDF і XML). І ваш парсер пропустить всі новини.
Якщо ж ваш XML-парсер розуміє простори імен, ви можете побудувати витонченіше рішення, яке зуміє розібрати новині і форматі 0.91 і у форматі 1.0.
А як виглядає формат RSS 2.0? На щастя, для програм, що розуміють формати RSS 0.91 і 1.0, формат RSS 2.0 буде простіше простого.
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>XML.com</title>
<link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML community.</description>
<language>en-us</language>
<item>
<title>Normalizing XML, Part 2</title>
<link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>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.</description>
<dc:creator>Will Provost</dc:creator>
<dc:date>2002-12-04</dc:date>
</item>
</channel>
</rss>
Як показує даний приклад, в RSS 2.0 теж використовуються простори імен, як і в RSS 1.0. Але це не RDF. Як і в RSS 0.91, немає простору імен, прийнятого за замовчуванням, а новини (в елементах item) розміщені знову в елементі channel.
мягкая мебель, диваны кресла : матрасы | кровати : шлагбаумы санкт петербург : Вакансии для веб-разработчиков : рекламодатели, размещение рекламы : Итальянские кухни, кухонные гарнитуры Zetta в Москве : Срочные вклады WMZ. Процентная ставка. Депозиты : почта
What is RSS? by Mark Pilgrim | переклад: LaSet