Что такое RSS?

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

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

Программисты, будьте бдительны! Под термином "RSS" скрывается формат, который развалился на некоторое количество различных версий как минимум 2-х различных (но существующих одновременно) форматов. Исходный 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, чтобы, например, публиковать заголовки новостей на своем сайте, или же чтобы сделать портал новостей и так далее. Как смотрится RSS-файл? Все зависит от того, о какой версии RSS идет речь. Вот образчик файла в формате RSS 0.91 (урезанная версия новостей с 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. впрочем есть все же некоторые различия, о коих ваша программа обязана знать:

    В 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.

    А как смотрится формат 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.

    Перевод: Александр Качанов