Обзор XML: Firefox 2.0 и XML

Ознакомьтесь с обработкой XML-данных в последних релизах Firefox

Обработка XML-данных в Firefox 2.0 претерпела ряд существенных изменений и в настоящее время близка к пику своей популярности. В этой статье мы рассмотрим некоторые отличия, включая неоднозначное решение изменить подход к работе с Web-каналами RSS.

Уче Огбуйи (Uche Ogbuji), главный консультант, Fourthought

Photo: Уче ОгбуйиУче Огбуйи (Uche Ogbuji) является консультантом и соучредителем корпорации Fourthought, которая занимается поставкой и консультационными услугами в области XML-решений для корпоративного управления знаниями. Корпорация Fourthought разрабатывает 4Suite, платформу с открытым исходным кодом для XML, RDF и приложений управления знаниями. Огбуйи также является ведущим разработчиком Versa - языка запросов RDF. Специалист по компьютерной технике и писатель, Огбуйи родился в Нигерии, в данной время проживает и работает в г. Боулдер, Колорадо, США. Связаться с ним можно по электронной почте uche@ogbuji.net.



15.08.2008

На текущий момент Web-браузеры являются, пожалуй, наиболее распространенным типом программного обеспечения, выступая в роли платформы для работы других приложений. Мы наблюдаем всплеск активности по разработке приложений, в частности, вновь вернувшихся к использованию динамических HTML-технологий, таких как Асинхронный JavaScript и XML (Ajax), а также возобновление работы над Microsoft® Internet Explorer®. В серии статей developerWorks, посвященной поддержке XML в Firefox (см. Ресурсы), были представлены функции версии 1.5, созданной на основе движка Mozilla Gecko 1.8. С тех пор, благодаря жесткой конкуренции в мире браузеров, появился Firefox 2.0 на основе Gecko 1.8.1. В новом релизе были затронуты и функции для работы с XML. О новинках мы расскажем в данной статье, а также подробно остановимся на одной потенциальной проблеме, о которой должны помнить разработчики.

Ослабленный контроль за Web-каналами

Одно из изменений в Firefox 2.0 несколько испугало пользователей. При публикации Web-канала, например RSS или Atom, можно добавить ссылку на страницу XSLT, которую браузер должен применить к XML-данным для отображения их в виде, удобном для пользователя. Пример использования XSLT-преобразования в канале Atom показан в листинге 1.

Листинг 1. Канал Atom со ссылкой на таблицу стилей XSLT
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xml" href="atom2html.xslt"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xml:lang="en"
      xml:base="http://www.example.org">
  <id>http://www.example.org/myfeed</id>
  <title>Простая лента</title>
  <updated>2005-07-15T12:00:00Z</updated>
  <link href="/blog" />
  <link rel="self" href="/myfeed" />
  <author><name>Юч Огбуджи</name></author>
  <entry>
    <id>http://www.example.org/entries/1</id>
    <title>Простая запись в блоге</title>
    <link href="/blog/2005/07/1" />
    <updated>2005-07-14T12:00:00Z</updated>
    <summary>Это простая запись в блоге</summary>
  </entry>
  <entry>
    <id>http://www.example.org/entries/2</id>
    <title />
    <link href="/blog/2005/07/2" />
    <updated>2005-07-15T12:00:00Z</updated>
    <summary>Это простая запись без заголовка</summary>
  </entry>
</feed>

Ключевой является вторая строка, в которой содержатся инструкции по обработке (PI) – ссылка на страницу XSLT. Если загрузить данный канал в Firefox 1.5, то браузер честно загрузит atom2html.xslt и отобразит результаты преобразования. При этом, чтобы посмотреть XML-представление данных, вам придется загрузить исходный код страницы, как описывается во второй статье нашей серии (см. Ресурсы). Отличие Firefox 2.0 заключается в том, что браузер игнорирует PI и всегда использует специальную страницу Firefox для отображения ленты. Пример такой страницы в Firefox 2.0.0.6 на Mac OS X показан на рисунке 1.

Рисунок 1. Отображение Web-канала в Firefox 2.0
Editing session on Wikipedia, using WikEd

Единственный способ обойти данную проблему – это "обмануть" простой эвристический тест, который использует Firefox для проверки, являются ли данные Web-лентой. Для этого приходится подменять первые 512 байт файла и убирать оттуда строку "rss" или "feed". Зачастую можно просто вставить комментарий, как показано в листинге 2:

Листинг 2. Решение проблемы игнорирования XSLT в канале Atom для Firefox 2.0 и Internet Explorer 7
<?xml version="1.0" encoding="utf-8"?>
<!-- Firefox 2.0 и Internet Explorer 7 используют простой
 тест для обнаружения Web-лент и изменения желаемого отображения
 данных. Поэтому приходится использовать данный комментарий,
 что, к сожалению, расходует трафик. Комментарий необходим для
 того, чтобы новые версии этих браузеров применили XSLT-преобразование
 к XML-данным. Больше о данной проблеме можно узнать по следующей ссылке:
https://bugzilla.mozilla.org/show_bug.cgi?id=338621
-->
<?xml-stylesheet type="text/xml" href="atom2html.xslt"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xml:lang="en"
      xml:base="http://www.example.org">
<!-- Далее содержимое идентично приведенному в листинге 1 -->
</feed>

Эта проблема вызвала горячие споры среди пользователей. В итоге разработчики Firefox решили не менять данное решение, и подобное поведение браузера должно сохраниться в следующих версиях. Лично мне оно не нравится, но вы можете сформировать собственное мнение, прочитав обсуждение проблемы. Стоит также упомянуть, что подобным образом себя ведут браузеры Internet Explorer и Apple Safari.

Микрозаголовки

Микрозаголовки (Microsummaries или Live Titles) – это новая возможность Firefox 2.0, с помощью которой можно задавать инструкции для замены заголовков на фрагменты содержимого Web-страниц, например из закладок. Например, используя микрозаголовки c сайта IBM developerWorks, можно заменять статичный текст "developerWorks : IBM's resource for developers" на заголовок последней избранной статьи. Микрозаголовки могут предоставляться самим Web-сайтом или создаваться пользователем. Последний вариант, известный также под названием “генерация микрозаголовков”, представляет особый интерес в контексте данной статьи, так как пользователю приходится самостоятельно использовать XML и XSL или же запускать ранее созданные генераторы. Пример такого генератора, извлекающего заголовок последней избранной статьи на developerWorks, показан в листинге 3.

Листинг 3. Генератор микрозаголовков для вставки названия избранной статьи на сайте IBM developerWorks
<?xml version="1.0" encoding="UTF-8"?>
<generator xmlns="http://www.mozilla.org/microsummaries/0.1" 
  name="IBM developerWorks featured article">
  <template>
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:html="http://www.w3.org/1999/xhtml">
      <xsl:output method="text"/>
      <xsl:template match="/">
        <xsl:text>Featured article:</xsl:text>
        <!--  Если сайт широко использует идентификаторы,
         то данное выражение можно переписать в целях повышения
         эффективности -->
        <xsl:value-of select="//html:a[@class='feature'][1]"/>
      </xsl:template>
    </xsl:transform>
  </template>
  <pages>
    <include>http://www.ibm.com/developerworks/[a-zA-Z0-9]*/?</include>
  </pages>
</generator>

Код генератора содержит две секции: шаблон и информацию о странице. Шаблон представляет собой XSLT, применяемую к Web-странице для извлечения микрозаголовков. Сами страницы задаются с помощью элемента <pages>. Микрозаголовки – это не что иное, как обычный текст, поэтому и результатом применения XSLT будет также текст. Центральным местом в генераторе является XPath-выражение //html:a[@class='feature'][1], с помощью которого находится элемент, содержащий последнюю избранную статью. В секции pages используется регулярное выражение, благодаря которому поиск производится с главной страницы, содержащей ссылки на зоны, посвященные конкретным тематикам.

В разделе Ресурсы приводится ссылка на руководство по установке генераторов микрозаголовков, подобно показанному в листинге 3. В настоящее время микрозаголовки поддерживаются только в браузерах Mozilla.

SAX и не только

Из функций, которые могут заинтересовать разработчиков модулей расширений к браузерам Mozilla, можно выделить SAX-парсер, относящийся к компонентной системе XPCOM. Таким образом, можно создавать расширения, эффективно обрабатывающие XML-данные в случае, если недоступны более высокоуровневые средства. Интеграция с XPCOM означает, что SAX-события можно теперь обрабатывать на C++, JavaScript, а также на любом языке, совместимом с XPCOM.


OpenSearch

OpenSearch – это стандарт XML, разработанный в инкубаторе Amazon A9. Он определяет несколько форматов XML и другие правила, позволяющие описывать и использовать поисковые сервисы. Firefox всегда предоставлял поддержку расширений поисковых движков, а благодаря поддержке OpenSearch в Firefox 2.0 возможности поиска могут быть дополнены средствами также совместимыми с Internet Explorer и другими браузерами.

В настоящее время Firefox поддерживает OpenSearch 1.1, который пока находится в фазе бета-тестирования, поэтому возможно понадобятся обновления, для обеспечения дальнейшей совместимости Firefox и OpenSearch. В листинге 4 показан пример документа OpenSearch, описывающего поиск на сайте IBM developerWorks.

Листинг 4. XML-документ, описывающий поиск на сайте IBM developerWorks с помощью OpenSearch
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
      <ShortName>IBM developerWorks search</ShortName>
      <Description>Search IBM developerWorks zones</Description>
      <Tags>xml java architecture</Tags>
      <InputEncoding>utf-8</InputEncoding>
      <Contact>https://www.ibm.com/developerworks/secure/feedback.jsp</Contact>
      <!-- Значение атрибута template перенесено на следующую строку
           после символа ? в целях форматирования -->
      <Url type="text/html" 
       template="http://www.ibm.com/developerworks/views/xml/libraryview.jsp?
search_by={searchTerms}"/>
      <Attribution>All content Copyright 2007, IBM developerWorks</Attribution>
</OpenSearchDescription>

В документе сказано, что поиск на сайте IBM developerWorks находится по адресу

http://www.ibm.com/developerworks/views/xml/libraryview.jsp?search_by={searchTerms}

При этом {searchTerms} является параметром шаблона, который при поиске должен заменяться на ключевые слова. Таким образом, для поиска по словам "Firefox XML" должен использоваться следующий URL:

http://www.ibm.com/developerworks/views/xml/libraryview.jsp?search_by=Firefox+XML

Система URL-шаблонов определена в спецификации OpenSearch. Кроме этого, спецификация определяет правила выдачи результатов поиска в виде лент RSS 2.0 или Atom 1.0, а также нескольких специальных расширений. В настоящее время Firefox не поддерживает такую возможность, поэтому любое описание поискового сервиса, не содержащее элемент Url с типом содержимого type="text/html", приведет к ошибке. Данное ограничение несколько разочаровывает, но, скорее всего, является простым следствием того, что большинство пользователей по-прежнему используют поиск через HTML-формы и страницы результатов, нежели с помощью механизмов Web 2.0.

В Firefox 2.0 описания OpenSearch, подобные примеру в Listing 4, выступают в роли полноценного модуля расширения поиска. Описания могут предоставляться Web-сайтами с помощью ссылок в заголовках страниц, таких как:

<link rel="search" type="application/opensearchdescription+xml" 
title="IBM developerWorks" 
href="/path/to/opensearch/description/document.xml"/>

Замечание: Каждый из трех приведенных выше примеров обычно помещается в одной строке. Они разбиты на несколько строк только в целях удобства просмотра и печати.


Заключение

Еще более захватывающие возможности по XML-обработке ожидают нас в Firefox 3.0, который пока проходит альфа-тестирование и должен быть выпущен в первой половине 2008 г. Он будет сочетать новые возможности и исправления серьезных ошибок, и я расскажу о них, как только он станет основным релизом Firefox, доступным для широкого использования. Кроме этого, развивается XML-инструментарий Mozilla, которым могут пользовать как разработчики, так и пользователи, работающие с XML-технологиями. В данной серии мы продолжим подробное освещение возможностей последних версий Firefox, так как именно браузер является лицом обработки XML-данных с точки зрения большинства пользователей и программистов.

Ресурсы

Научиться

Получить продукты и технологии

  • Firefox: скачайте Web-браузер на основе Mozilla.
  • Скачайте ознакомительные версии программного обеспечения IBM: используйте в вашем следующем проекте ознакомительные версии ПО, которые можно скачать прямо с сайта IBM developerWorks (EN).

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML
ArticleID=331161
ArticleTitle=Обзор XML: Firefox 2.0 и XML
publish-date=08152008