На текущий момент 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
Единственный способ обойти данную проблему – это "обмануть" простой эвристический тест, который использует 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.
Из функций, которые могут заинтересовать разработчиков модулей расширений к браузерам Mozilla, можно выделить SAX-парсер, относящийся к компонентной системе XPCOM. Таким образом, можно создавать расширения, эффективно обрабатывающие XML-данные в случае, если недоступны более высокоуровневые средства. Интеграция с XPCOM означает, что SAX-события можно теперь обрабатывать на C++, JavaScript, а также на любом языке, совместимом с XPCOM.
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-данных с точки зрения большинства пользователей и программистов.
Научиться
- Оригинал статьи: Thinking XML: Firefox 2.0 and XML (EN).
- Прочитайте статью Новые возможности Firefox 3.0 для разработчика, в которой описываются изменения и функции, которые должны войти в следующий релиз Firefox. (EN)
- Ознакомьтесь с тремя недавними статьями developerWorks, посвященным поддержке XML в Firefox 1.5: (EN)
- XML в Firefox 1.5, часть 1: Обзор возможностей. В статье рассказывается о новых возможностях работы с XML в быстро развивающемся браузере.
- XML в Firefox 1.5, часть 2: Базовая обработка XML-данных. Статья освещает широкий круг вопросов, касающихся XML, таких как, разбор XML, CSS, таблицы стилей XSLT, а также напоминает о сушествующих ограничениях.
- XML в Firefox 1.5, часть 3: JavaScript и XML в Firefox . Статья посвящена работе с XML с помощью JavaScript.
- Узнайте и примете участие в обсуждениях проблемы игнорирования таблиц стилей в Web-лентах XML со стороны Firefox 2.0 (EN).
-
Microsummaries: узнайте больше об этих периодически обновляемых сводках Web-страниц, поддержка которых была впервые добавлена в Firefox 2.0 (EN).
-
Поддержка SAX в Firefox 2.0: прочитайте, как разработчики модулей расширения используют SAX API для разбора XML при создании приложений XUL (EN).
- Узнайте о том, в какой степени Firefox 2.0 поддерживает SVG, прочитав статью SVG в Firefox 2.0 (EN).
- Прочитайте статью Создание встраиваемых модулей OpenSearch в Firefox, в которой рассказывается о создании модулей, совместимых с OpenSearch и поддерживающих дополнительные возможности Firefox, такие как подсказки или элемент
SearchForm(EN). - Обратитесь к статье Введение в OpenSearch, посвященной OpenSearch – набору простых форматов для обмена результатами поиска (EN).
-
Справка по поиску на сайте developerWorks: ознакомьтесь с эффективными приемами поиска, созданием запросов и использованием операторов на сайте IBM developerWorks (EN).
-
Сертификация по XML корпорации IBM: узнайте, как стать сертифицированным разработчиком IBM в области XML и связанных с ним технологий (EN).
- Обратитесь к Технической библиотеке XML, содержащей множество статей, советов, руководств, стандартов и IBM Redbooks.
-
Семинары и обучение на developerWors Россия.
- Обратитесь к магазину технической книги, в котором представлены книги на данную и другие темы (EN).
Получить продукты и технологии
-
Firefox: скачайте Web-браузер на основе Mozilla.
- Скачайте ознакомительные версии программного обеспечения IBM: используйте в вашем следующем проекте ознакомительные версии ПО, которые можно скачать прямо с сайта IBM developerWorks (EN).
Обсудить

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