Счетчики








XML как универсальный формат для обмена массивами новостных данных

Дюжев Антон Алексеевич, Дюжев Александр Алексеевич

В настоящее время широкое распространение получили сайты, предоставляющие информацию о текущих новостях (мировых, новостях всемирной сети или в какой либо другой области).

При этом возникает проблема автоматического обмена новостными блоками между различными сайтами посредством сети Интернет. Ниже будут рассмотрены несколько способов, решения этой проблемы. Но для дальнейшего рассмотрения выделим ключевые роли.

Сайт-поставщик - сайт, поставляющий новости для использования их другими сайтами.

Сайт-потребитель - сайт, использующий новости, поставляемые сайтом-поставщиком.

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


Рис. 1

Первый способ обмена новостными блоками состоит в том, что вебмастер сайта-потребителя разрабатывает скрипт (например, на Perl, PHP, Python или ASP), который запрашивает страницу с блоком новостей и выбирает нужный блок среди HTML-кода страницы. Возможно так же фильтрование информации из HTML-кода полученного блока. Затем производится вставка вычлененной информации в страничку сайта-потребителя. При всей, казалось бы, независимости от политики сайта-поставщика этот подход имеет существенный недостаток: при малейшем изменении структуры HTML-кода странички сайта-поставщика скрипт, написанный вебмастером сайта-потребителя, не сможет корректно извлечь информацию с обновленной страницы. При этом возможно не только исчезновение новостного блока с сайта-потребителя, но и искажение уже существующей информации страницы сайта-потребителя.

Следующий способ, состоит в том, что сайт-поставщик предоставляет адрес ресурса (возможно с параметром), по которому расположен определенный новостной блок. При этом возможно предоставление сайтом-поставщиком готового кода (например, на JavaScript) для прямой вставки в HTML-код страницы сайта-потребителя. Этот способ лучше, чем предыдущий, но имеет свои минусы. Во-первых, внешний дизайн блока новостей может не согласоваться с дизайном сайта-потребителя. Может не совпадать фон блока, цвет текста новости, размер шрифта и размеры самого блока новостей. Да и сам формат блока не может быть произвольно изменен (например, жестко задано расположение заголовков, относительно самих новостей). При этом возможно предоставление сайтом-поставщиком нескольких вариантов дизайна блоков и/или более-менее универсального дизайна, но все это требует дополнительных трудозатрат при только частичном решении проблемы.

Предлагаемый метод свободен от вышеперечисленных недостатков. Суть метода в том, чтобы использовать XML (Extensible Markup Language - расширяемый язык разметки) для хранения собственно новостей на сайте-поставщике, а вебмастеру сайта-потребителя предоставить адрес этого XML-документа с описанием его формата. Вебмастер сайта-потребителя может самостоятельно разрабатывать дизайн блока, записывая его в XSLT (Extensible Stylesheet Language Transformations) [1], использовать XSLT, предоставленные сайтом-поставщиком, или интерактивно сконструировать собственный XSLT на сайте-поставщике, если последний предоставит такой сервис.

При этом для конечного преобразования информации в HTML-формат вебмастер сайта-потребителя может самостоятельно написать скрипт, либо использовать и подкорректировать скрипт, предоставленный сайтом-потребителем.


Рис. 2

Для взаимодействия сайтов (поставщика и потребителя) требуется проведение ряда мероприятий на обеих сторонах. Сначала рассмотрим сайт-поставщик.

Для ввода поступающих новостей, разрабатывается HTML-форма. Скрипт на Perl обрабатывает введенные через форму данные. Для хранения текущих новостей и архива в виде XML-файлов выделяется дисковое пространство.

Авторизация клиентов (сайтов-потребителей) обеспечивается стандартными средствами web-сервера Apache.

Web-форма имеет следующие поля: "Тематический раздел", "Дата", "Время", "Заголовок Новости", "Текст новости" и заполняется content-оператором.

Скрипт, обслуживающий форму, выполняет следующие функции:

  • Определяет актуальность уже имеющихся в XML-файле новостей по дате/времени и переводит устаревшие данные в архив новостей, который так же построен в виде XML-файла.
  • Преобразовывает введенные content-оператором данные в формат XML
  • Записывает получившиеся данные в XML-файл

Для администрирования новостных блоков так же создается HTML-форма и соответствующий скрипт, оперирующий с XML-файлом текущих новостей и выполняющий следующие функции: удаление, корректировка текста, корректирование заголовка, изменение раздела выбранной новости.

Администрирование базы данных для авторизации сайтов-потребителей обеспечивается HTML-формой, perl-скриптом и предоставляет стандартный набор функций (добавление, удаление, редактирование записей).

Для манипуляций с XML-данными на сайте-поставщике используется библиотека XML::Parser [4].

Рассмотрим сайт-потребитель.

Периодическое взаимодействие с сайтом-поставщиком состоит в авторизации, запросе XML-файла с новостями и собственно передачи этого файла. Для взаимодействия с сайтом-поставщиком создается Perl-скрипт, периодический запуск которого обеспечивается стандартным механизмом на основе процесса cron в Unix [6]. Само взаимодействие обеспечивается через Perl-модуль LWP (Library for WWW access in Perl), подключаемый к скрипту. Далее, скрипт производит конвертирование переданного файла в HTML-формат, используя, созданный вебмастером XSLT файл, в котором описаны правила конвертирования. Для этого используется библиотека Sablotron [3], имеющая реализацию в Perl в качестве модуля XML::Sablotron.

Вставка готового HTML-блока в страницы сайта производится динамически при запросах посетителей. Для этого используется механизм SSI (Server Side Includes).

Можно выделить следующие основные преимущества рассмотренного метода:

  • независимость внешнего представления новостных блоков на сайтах потребителя и поставщика;
  • более широкие возможности по представлению информации (создание самостоятельного архива новостей на сайте-потребителе, организация рассылок новостей по e-mail, поддержка WAP-формата и др.);
  • более быстрое внедрение сервиса для обмена новостями на сайте-поставщике, особенно, если внутренняя работа сайта уже ведется с использованием XML.

Список литературы

  1. Ч. Кирк, Н. Питц-Моултис. XML. Современная технология создания документов для Internet. СПб: BHV, 2000.
  2. Ф. Бумфрей, О. Диренцо, Й. Дакетт и др. XML. Hовые перспективы WWW. М.: ДМК, 2000.
  3. XSL Engine Sablotron: http://www.gingerall.com/charlie/ga/xml/p_sab.xml
  4. XML::Parser http://wwwx.netheaven.com/~coopercc/xmlparser/intro.html
  5. Материалы сайтов http://www.w3.org/XML/, http://www.xml101.com/, http://www.xml.ru/, http://www.xml.net.ru/
  6. Э. Немет, Г. Снайдер и др. UNIX: руководство системного администратора. Киев: BHV, 1999.

Источник: http://www.miem.edu.ru/rio/seminar5/info_sborn.zip (МИЭМ)