(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Обзор XML: Firefox 2.0 и XML (исходники)

Уче Огбуйи (Uche Ogbuji)

На текущий момент 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 используется регулярное выражение, благодаря которому поиск производится с главной страницы, содержащей ссылки на зоны, посвященные конкретным тематикам.

В настоящее время микрозаголовки поддерживаются только в браузерах 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-данных с точки зрения большинства пользователей и программистов.



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Дискуссии и обсуждения общего плана »
Написать редактору 
 Рекомендовать » Дата публикации: 24.08.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
C. Ghisler & Co (Total Commander). Total Commander/Тотал Командер: Для юридических лиц: 1 копия
Купить WinRAR : 5 : Академическая лицензия 1 лицензия
Panda Antivirus Pro - Лицензии для SMB - (лицензия на 1 год)
ABBYY PDF Transformer+ Full
IBM Domino Messaging Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
СУБД Oracle "с нуля"
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Новые материалы
Delphi - проблемы и решения
Программирование на Visual С++
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Ищу программиста для написания программы (61)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
Написание любых программ на заказ (19)
Напишу любую программу на заказ
 
Рабочее зеркало букмекера 1win (1)
Сегодня в случае недоступно официального сайта есть рабочие зеркала БК 1win...
 
Автомобиль (4)
Доброй ночи. Планируем приобрести авто, рассматриваем б.у варианты, как проще всего подобрать...
 
Сдать часы (3)
Подскажите, где можно сдать часы по хорошей цене.
 
 
 



    
rambler's top100 Rambler's Top100