Перспективные технологии и языки веб-разработки

Синдикация и аггрегирование веб-контента. Улучшение usabilty веб-контента

Показывать лекцию целиком

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

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

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

Третий вариант предполагает почтовые рассылки в HTML-формате. Они популярны для составления пресс-релизов и различных маркетинговых материалов, однако оперативно получать данные таким способом невозможно (при этом создается высокая нагрузка на почтовые серверы, характерны задержки в прохождении почты). Кроме того, этот вариант является уязвимым для спама.

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

Хотя RSS и веб-фрагменты основаны на Windows RSS Platform, между ними есть принципиальные различия:

  • Веб-фрагменты основываются на спецификации микроформата hAtom (основанного на формате Atom с исключением ряда элементов). В RSS используются RSS 2.0 и Atom.
  • Для организации RSS-потока вебмастер должен создать специальный XML-файл, в который будет записываться транслируемая информация, который будет загружаться в RSS-агрегатор. В случае с веб-фрагментами дополнительных файлов не требуется - данные собираются непосредственно со страницы сайта.
  • При подписке на RSS-канал пользователю потребуется открывать сам поток в браузере или в программе для чтения каналов, после чего держать запущенной вкладку с потоком (если чтение идет в IE8). В случае с веб-фрагментами доступ к ним (после того, как пользователь подпишется на веб-фрагмент) осуществляется через панель браузера "Избранное". С помощью таких фрагментов можно проверять новую почту, получать новости, прогноз погоды и другую оперативную информацию без необходимости открывать лишние окна.
  • При передаче информации в виде RSS имеется возможность создания ленты публикаций, когда пользователь может увидеть и просмотреть не только самую последнюю информацию, но и то, что было опубликовано ранее. На веб-фрагменте страницы сайта всегда в наличии только самая последняя информация. Поэтому в любой момент времени для просмотра доступны только последние данные. История публикаций не поддерживается.
  • Таким образом, если пользователя интересует история событий, то лучше пользоваться RSS-каналами, если только текущая информация - веб-фрагментами.

    Веб-синдикация на основе RSS

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

    Веб-поток - формат данных, используемый для предоставления пользователям часто обновляемого контента. Распространители контента объединяют (синдицируют) веб-потоки, давая пользователям возможность подписаться на них. Другое название для веб-потока - синдицированный поток. Создание набора веб-потоков, которые доступны одновременно в одном месте называется агрегированием. Для этого используются специальные агрегаторы.

    Агрегатор потоков (feed aggregator) - клиентское веб-приложение, собирающее синдицированный веб-контент такой как новостные заголовки, блоги, подкасты и другие в одном месте для более удобного просмотра.

    Для принимающего сайта веб-синдикация является эффективным способом размещения более исчерпывающей и своевременной информации на своих страницах.

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

    Взаимодействие веб-потоков и агрегаторов происходит в следующем порядке:

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

    Некоторые из веб-браузеров содержат встроенные возможности для аггрегирования потоков. Это делается путем простого ввода URL веб-потока или кликом на гиперссылке в браузере. Формат веб-потоков не предназначен для непосредственного чтения пользователем, поскольку позволяет автоматически переносить контент с сайт на сайт. Для представления информации из веб-потока обычно используются 2 формата: RSS и Atom.

    Если сравнивать веб-поток с более традиционной почтовой технологией доставки часто обновляемой информации, то можно указать на следующие преимущества первого:

  • Поскольку при подписке пользователь не указывает свой адрес электронной почты, эта технология лишена таких потенциальных угроз как спам, вирусы, фишинг и кража личной информации.
  • При отказе от использования веб-потока нет необходимости отправлять запрос на отказ от подписки; пользователь просто исключает данный поток из своего агрегатора.
  • Имеются широкие возможности для автоматической сортировки сообщений от веб-потоков вплоть до использования сложных правил и регулярных выражений.
  • Браузеры Internet Explorer 7+, Opera, Safari, Firefox и другие могут работать с веб-потоками через инструменты панели Закладок, Избранного и других. Имеются также специализированные программы для чтения веб-потоков, например FeedDemon, Thunderbird, Outlook 2007 и другие.
  • Агрегатор позволяет объединить информацию из разных потоков в одном окне веб-браузера или веб-приложения. Такое приложение называется RSS-каналом, новостной лентой, агрегатором потоков или поисковым агрегатором. Подкастинг-агрегаторы могут автоматически загружать медиа-файлы. Объединенный контент агрегатор получает и интерпретирует обычно в формате RSS или других форматах, основанных на XML, например RDF/XML или Atom. Наиболее развитые методы аггрегирования веб-потоков реализуются на основе технологий AJAX и XML компонентов - веб-виджетов (web widgets).

    Многие языки программирования имеют библиотеки функций, позволяющие загружать, обрабатывать, генерировать и выполнять удаленную загрузку каналов. Например в Perl имеется поддержка нескольких библиотек в пространстве имен XML::RSS

    RSS

    RSS - семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п.

    В разных версиях аббревиатура RSS имела разные расшифровки:

  • Rich Site Summary (RSS 0.9x);
  • RDF Site Summary (RSS 0.9 и 1.0);
  • Really Simple Syndication (RSS 2.x).
  • Из истории формата.

    Первой открытой официальной версией RSS стала версия 0.90. Формат был основан на RDF (Resource Description Framework - стандарт схемы описания потоков) и многим показался слишком сложным, после чего появилась упрощённая версия - 0.91.

    В 2000 году произошло разделение формата:

  • Группа разработчиков из списка рассылки "RSS-DEV" предложила формат RSS 1.0, который был основан на стандартах XML и RDF организации W3C. Расширения формата предлагалось делать через модули расширений, описываемые в своих пространствах имён. Так как проект использует уже существующие стандарты, рассматривается его использование в рамках технологии Semantic Web.
  • Спецификация RSS 0.92 является развитием версии 0.91 и ориентируется на тех пользователей, которым RDF-описание показалось излишне сложным. Дальнейшим развитием этой ветки стал формат RSS 2.0, который тоже поддерживает расширения с помощью модулей, лежащих в своих пространствах имён.
  • В июне 2006 года появился конкурент RSS - формат Atom.
  • Из-за существования нескольких различных версий формата RSS-каналов программы-агрегаторы должны уметь работать со всеми вариантами, что создаёт определенные трудности их разработчикам. Проблемы совместимости возникают также при вставке в RSS-описания небольших HTML-фрагментов, которые в одних случаях оформляются как CDATA узлы, а в других - как HTML-кодированные PCDATA узлы. Существуют проблемы с различными форматами представления дат и метаданных.

    Микроформаты

    Микроформаты (англ. microformats) - это способ семантической разметки сведений о разнообразных сущностях (событиях, организациях, людях, товарах и др.) на веб-страницах, используя стандартные элементы языка HTML (XHTML).

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

    Поскольку микроформаты основаны на уже существующих стандартах (таких, как HTML и XHTML), их легко добавлять на существующие страницы в WWW.

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

    Для разметки микроформатами подходят любые элементы HTML, но особое значение придаётся элементам, которые не имеют собственного, стандартного семантического значения - div и span. Из атрибутов в настоящее время используются в основном следующие:

  • class
  • rel
  • rev
  • title
  • Каждый из микроформатов предназначен для решения определенной задачи. Наиболее широко используются следующие микроформаты:

  • hCard - организации и люди;
  • hCalendar - события;
  • hAtom - ленты новостей (как аналог RSS и Atom) в обычном HTML или XHTML;
  • XFN - социальные взаимоотношения;
  • rel-tag - метки (теги) и образование фолксономии;
  • xFolk - помеченные ссылки;
  • adr - почтовые адреса;
  • geo - географические координаты (широта и долгота);
  • hReview - отзывы (о товарах, услугах, событиях и тому подобном);
  • nofollow - для предотвращения индексации поисковыми системами определённых документов.
  • Веб-фрагменты (web-slices)

    Основой веб-фрагмента является микроформат hAtom с несколькими дополнительными свойствами. В самом веб-фрагменте используется простая семантическая разметка HTML для представления части веб-страницы, на которую можно подписаться. Заметки можно добавлять прямо в содержимое HTML-страницы.

    Веб-фрагменты выполняют четыре основные функции:

  • Обнаружение.
  • Обновление.
  • Предварительный просмотр.
  • Навигация.
  • Чтобы обнаружить веб-фрагмент, пользователи помещают на него указатель мыши; при этом вызывается функция обнаружения веб-фрагмента в документе.

    Семантическая веб-сеть

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

    Термин был введен Тимом Бернерсом-Ли в мае 2001 года.

    В семантической веб-сети предполагается повсеместное использование

  • универсальных идентификаторов ресурсов (URI),
  • онтологий и языков описания метаданных.
  • Концепция семантической веб-сети была принята и продвигается W3С. Для её внедрения предполагается создание сети документов, содержащих метаданные о ресурсах WWW, и существующей параллельно с ними. Тогда как сами ресурсы предназначены для восприятия человеком, метаданные используются машинами (поисковыми роботами и другими интеллектуальными агентами) для получения однозначной информации о свойствах этих ресурсов с помощью механизмов логического вывода.

    Техническую часть семантической паутины составляет семейство стандартов на языки описания, включающее XML, XML Schema, RDF, RDF Schema, OWL и др. Необходимость описания метаданных так или иначе приводит к дублированию информации. Каждый документ должен быть создан в двух экземплярах: размеченным для чтения людьми, а также в машинно-ориентированном формате.

    Онтология

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

    Современные онтологии обычно состоят из экземпляров, понятий, атрибутов и отношений.

    Для описания онтологий Веб был разработан специальный язык - OWL (Web Ontology Language), построенный на основе XML. Язык OWL может быть использован для описания классов и отношений между ними. В основе языка - представление действительности в модели данных "объект - свойство". Язык применим не только для описания веб-страниц, но и любых объектов действительности и рассматривается в качестве одной из фундаментальных технологий, необходимых для построения Семантической веб-сети.

    Семантические веб-сервисы

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

    Технически, семантический веб-сервис отличается от обычного веб-сервиса наличием не только описания интерфейса (обычно на языке WSDL) в терминах типов данных, передаваемых сервису, возвращаемых значений и генерируемых ошибок, но и наличием семантического описания всех его характеристик.

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

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

    (рис 21.1) Обнаружение веб-фрагмента на веб-странице.

    Каждый веб-фрагмент, обнаруженный браузером IE8, добавляется в список кнопки "Обнаружение веб-канала" , расположенной на панели команд. Веб-страница может включать до 100 веб-фрагментов, но только 20 из них могут появляться одновременно в списке кнопки "Обнаружение веб-канала". Задавая веб-фрагмент по умолчанию, можно указать, какой веб-фрагмент должен появляться в верхней строке списка.

    Если пользователь подписывается на веб-фрагмент, Internet Explorer добавляет его на панель "Избранное".

    (рис 21.2) Подписка на веб-фрагмент.

    Чтобы получать уведомления об обновлениях после подписки на веб-фрагмент, пользователю необходимо сначала добавить веб-фрагмент на панель "Избранное". После оформления подписки подсистема загрузки веб-каналов периодически обновляет веб-фрагмент, используя информацию с веб-сайта. Если IE8 обнаруживает изменение, текст кнопки веб-фрагмента выделяется полужирным, чтобы уведомить пользователя.

    По умолчанию в Internet Explorer используется рекомендуемый интервал обновления, указанный издателем веб-фрагмента в элементе свойство ttl, если такой элемент существует; в противном случае обновления выполняются с интервалом по умолчанию для канала, который обычно составляет 24 часа. Пользователи могут либо настроить частоту обновления в диалоговом окне свойств веб-фрагмента, либо в любое время обновить кэшированный веб-фрагмент, нажав кнопку "Обновить" в окне предварительного просмотра.

    Для просмотра веб-фрагмента пользователю следует нажать кнопку соответствующего веб-фрагмента на панели "Избранное". В окне предварительного просмотра, которое называется также всплывающим окном, отображается содержимое веб-фрагмента из локального кэша или альтернативный источник отображения, если он был определен издателем.

    (рис 21.3) Окно предварительного просмотра веб-фрагмента.

    Для быстрого доступа к полной версии веб-страницы следует нажать кнопку "Открыть" в окне предварительного просмотра.

    Обнаружение веб-фрагментов

    Чтобы обнаружить веб-фрагмент на веб-странице, Internet Explorer 8 ищет элементы с определенными именами класса и атрибутами.

    Веб-фрагмент, код которого размещается на веб-странице, обязательно должен содержать следующие свойства:

  • hslice
  • id
  • entry-title
  • Свойство Описание
    hslice описывает раздел веб-страницы, на который можно оформить подписку в веб-браузере. В элементе hslice содержатся все обязательные и дополнительные свойства веб-фрагмента. Пример: <div class="hslice" id="score">. Именам классов веб-фрагментов не требуется правило CSS в таблице стилей.
    id Используется для идентификации веб-фрагмента в URL-адресе. Атрибут id должен присутствовать в том же самом элементе, для которого используется класс hslice. Значение id должно быть уникальным.
    entry-title По крайней мере в одном дочернем элементе hslice должно использоваться имя класса entry-title. Значение этого свойства сопоставляется с текстом на кнопке веб-фрагмента и объявленным именем на кнопке "Обнаружение веб-канала" . Пример:
    <div class="hslice" id="main">
        <h2 class="entry-title">MySite News</h2>
        ...
    </div> 
    

    Управление обновлениями и уведомление

    Проверяя, нет ли обновлений, IE8 сравнивает веб-фрагмент с его версией в кэше. Для платформы Windows RSS новости и веб-фрагменты обновляются периодически, по умолчанию через каждые 24 часа. Однако если веб-фрагмент содержит свойство ttl, то в подсистеме загрузки веб-каналов расписание обновления настраивается с использованием указанного значения.

    Длительность и частота проверок обновлений регулируются с помощью следующих элементов веб-фрагмента:

  • ttl
  • endtime
  • Срок жизни (свойство ttl) - это количество минут, в течение которых веб-фрагмент считается актуальным. Если пользователь не изменяет интервал обновления, подсистема загрузки веб-каналов рассматривает это значение как рекомендуемую частоту обновления.

    Время истечения срока действия (свойство endtime) веб-фрагмента указывается в следующем виде:

    <abbr class="endtime" title="2008-07-25T17:30:00-07:00"> Срок действия </abbr>
    

    Дата и время указываются в атрибуте title, сохраняя внутренний текст элемента для понятного пользователю представления времени, если необходимо.

    Для выражения значений времени используется международный стандарт ISO 8601 Date and Time on the Internet: Timestamps (RFC3339) (Дата и время в Интернете: отметки времени). Общепринятый формат: ГГГГ-ММ-ДДВчч:мм:сс[Z|(+|-)чч:мм].

    В формате допустим один из следующих вариантов:

  • "Z" - всемирное координированное время (UTC) или время по Гринвичу (GMT);
  • ("+"|"-")чч:мм - часы и минуты смещения часового пояса.
  • После нажатия кнопки "Открыть" во всплывающем окне веб-фрагмента Internet Explorer обычно переходит к веб-странице, на которой первоначально был найден веб-фрагмент, или к альтернативному источнику обновления, если он указан.

    Задание веб-фрагмента по умолчанию

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

    Чтобы указать веб-фрагмент по умолчанию, следует добавить элемент link в внутри раздела head документа, например:

    <link 
        rel="default-slice"
        type="application/x-hatom" 
        href="#news" /> 
    

    Элемент link должен иметь следующие атрибуты:

  • rel: должен иметь значение default-slice;
  • type: должен иметь значение application/x-hatom;
  • href: идентификатор #id веб-фрагмента в текущем документе.
  • Ускорители

    В Internet Explorer 8 ускорители - это команды контекстного меню, предоставляющие быстрый доступ к приложениям или веб-службам с какой-либо веб-страницы. Пользователи могут устанавливать ускорители из галереи дополнений IE 8 или через любой веб-сайт, на котором они объявлены. Ускорители упрощают копирование информации с одной веб-страницы на другую.

  • Ускорители появляются в контекстном меню (открывается при щелчке правой кнопкой) веб-страницы в Internet Explorer. Они группируются по функциям, поэтому пользователи могут быстро вызвать нужную задачу.
  • Для ускорителей возможны два типа сценариев: пользователи могут предварительно просматривать информацию, не покидая веб-страницу, или выполнить отправку содержимого прямо в приложение или веб-службу.
  • В XML-ускорителях используется XML-файл для описания формата HTTP-запросов к веб-серверу. Данные из целевого контекста (выбранный объект, ссылка или документ) передаются в виде переменных в параметрах URL-адреса и/или данных формы.
  • (рис 21.4) Использование ускорителей для выделенного текста.

    Ускорители группируются по функциям, поэтому пользователи могут быстро вызвать нужную задачу. В ходе установки ускорителя или в диалоговом окне "Надстройки" можно задать ускоритель по умолчанию для конкретной категории.

    Примеры существующих служб, для которых поддерживаются ускорители:

  • Add: del.icio.us, Digg.
  • Blog: Windows Live Spaces, Windows Live Writer.
  • Define: Encarta, Wikipedia, Dictionary.com.
  • Map: Windows Live Map, Google Maps, Yahoo! Maps.
  • Send: Windows Live Mail, Gmail, Yahoo! Mail.
  • Translate: Bing Translator, AltaVista's Babel Fish, Google Translation.
  • Search: Bing, Yandex Search.
  • Если ускоритель не попадает ни в одну из рекомендованных категорий, можно определить собственную категорию.

    Ускорители поиска. Спецификация OpenSearch.

    В Internet Explorer 8 существенно улучшены в плане удобства возможности поиска благодаря следующим функциям:

  • Подсказки поиска и поставщики поиска. Пользователи могут ввести нужный поисковый запрос намного быстрее. Поддерживается формат JSON и расширенный формат OpenSearch XML.
  • Визуальные подсказки поиска. Интегрированный поиск рисунков и другого наглядного содержимого.
  • Улучшенный пользовательский интерфейс. С помощью раскрывающегося списка быстрого выбора и контекстного меню ускорителей можно легко выбирать установленные поставщики поиска и переключаться между ними. Кроме того, с помощью поиска в журнале, можно автоматически находить недавно просмотренные веб-страницы, не закрывая окна поиска.
  • (рис 21.5) Использование подсказок поиска.

    Таким образом, пользователи могут выполнять поиск непосредственно из Internet Explorer, не переходя на сайты поисковых систем. Поставщик поиска по умолчанию также используется для выполнения поиска из адресной строки. Чтобы добавить поставщика поиска в IE 8, нужно позволить пользователям подключить ваш веб-сайт в качестве поставщика поиска в поле поиска. Для этого:

  • создается файл описания OpenSearch для поставщика поиска;
  • файл описания размещается на веб-сайте, чтобы пользователи смогли установить себе поставщика поиска.
  • Файл описания OpenSearch

    Файлы описания OpenSearch - это небольшие XML-файлы, описывающие поставщика поиска для IE 8.

    Следующий образец файла описания OpenSearch определяет тип поисковых услуг, которые будут предложены.

    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" 
          xmlns:ie="http://schemas.microsoft.com/Search/2008/">
      <ShortName>My Custom Search</ShortName>
      <Image height="16" width="16" 
        type="image/icon">http://example.com/example.ico</Image>
      <Url type="text/html" 
        template="http://example.com/search.aspx?q={searchTerms}source=IE"/> 
      <Url type="application/x-suggestions+json" 
        template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
      <Url type="application/x-suggestions+xml" 
        template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
      <ie:PreviewUrl type="text/html" 
        template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
    </OpenSearchDescription>
    

    Файлы описания OpenSearch должны содержать имя поставщика поиска и URL-адрес поиска. Без этих элементов установка поставщика поиска в IE 8 невозможна. Все URL-адреса поиска должны содержать элемент {searchTerms} в строке запроса. Когда браузер IE 8 обращается к этому поставщику для получения результатов поиска, элемент {searchTerms} заменяется поисковым запросом, введенным пользователем в поле быстрого поиска.

    Добавление подсказок поиска в файлы описания OpenSearch

    В IE 8 поддерживается отображение подсказок поиска. С помощью вариантов поиска можно быстро предлагать пользователям более эффективные поисковые запросы. Чтобы предоставить пользователям подсказки поиска в формате JSON и XML, файл описания добавляются следующие элементы:

    <Url type="application/x-suggestions+json"
       template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
    
    <Url type="application/x-suggestions+xml" 
      template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
    

    Предварительный просмотр результатов поиска

    Все установленные поставщики поиска автоматически преобразуются в ускорители. Ускорители поддерживают предварительный просмотр, что дает возможность показать пользователю предварительные результаты поиска. Для этого в файл описания OpenSearch добавляется элемент PreviewUrl, как показано ниже.

    <ie:PreviewUrl type="text/html" 
      template="http://suggestions.example.com/search.aspx?q={searchTerms}/>
    

    Если добавить этот элемент в файл описания OpenSearch то, можно будет предоставить пользователям небольшое окно с результатами поиска. Когда пользователь выделит текст на веб-странице, и щелкнув значок "Ускорители" и наведет указатель мыши на наименование поставщика поиска, откроется окно просмотра (размером 320 x 240 пикселей) с результатами поиска.

    Коллекция веб-фрагментов, ускорителей и поставщиков визуального поиска доступна на веб-сайте: http://www.ieaddons.com/ru/.

    Спецификация OpenSearch

    Спецификация OpenSearch была разработана подразделением A9 компании Amazon.com и первая версия OpenSearch 1.0 была представлена Джеффом Безосом (Jeff Bezos) на конференции Web 2.0 в марте 2005 г. Черновик спецификация OpenSearch 1.1 был опубликован в период с сентября по декабрь 2005 г.

    Спецификация OpenSearch включает в себя:

  • Файлы описания OpenSearch: XML файлы, которые идентифицируют и описывают поисковые сервисы.
  • OpenSearch Query Syntax: описывает каким образом можно получить результаты поиска
  • OpenSearch RSSOpenSearch 1.0) или OpenSearch ResponseOpenSearch 1.1): описывает формат представления результатов.
  • OpenSearch Aggregators: сайты, которые могут отображать результаты OpenSearch.
  • OpenSearch "Auto-discovery": описывает способы сообщения о том, что имеется ссылка на поисковый модуль расширения (plugin) для пользователя, или размещения соответствующей ссылки в заголовке HTML страницы.
  • В спецификации версии 1.0 допустим только один ответ в RSS формате; напротив, версия 1.1 предусматривает поддержку множественных запросов в любых форматах. RSS и Atom лишь формально поддерживаются OpenSearch агрегаторами, более приемлемыми форматами считаются, такие как, например HTML.

    Элементы файла описания OpenSearch

    Название элемента Назначение Атрибуты Доп. информация
    OpenSearchDescription Корневой узел документа xmlns="http://a9.com/-/spec/opensearch/1.1/"
    ShortName Краткое название поисковой службы. Длина не должна превышать 16 символов. Не должны использоваться элементы разметки. В файле может быть только один элемент.
    Description Краткое текстовое описание поисковой службы Длина не должна превышать 1024 символов. Не должны использоваться элементы разметки. В файле может быть только один элемент.
    Url Описывает интерфейс с помощью которого клиент может делать запросы ко внешним источникам
  • template - шаблон URL, в соответствии с синтаксисом OpenSearch URL. Это обязательный атрибут.
  • type - MIME тип описываемого ресурса. Это обязательный атрибут.
  • rel - роль ресурса по отношению к документу. Должен содержать список разделенных пробелами допустимых значений. Значение по-умолчанию: "results" Это необязательный атрибут.
  • indexOffset - индекс первого результата в списке поиска. Значение должно быть целым. Значение по умолчанию - "1". Необязательный атрибут.
  • pageOffset - номер страницы для первого множества результатов поиска. Значение по умолчанию - "1". Необязательный атрибут. Может присутствовать один или более раз.
  • Атрибут rel может принимать следующие значения:
  • "results" (по умолчанию) - представляет запрос результатов поиска в нужном формате.
  • "suggestions" - представляет запрос подсказок поиска в нужном формате.
  • "self" - представляет канонический URL текущего документа.
  • "collection" - представляет запрос на множество ресурсов.
  • Contact Содержит e-mail составителя документа с описанием провайдера поиска. Элемент не является обязательным.
    Tags Содержит множество слов, используемых в качестве ключевых слов, идентифицирующих и категоризующих поисковый контент.

    Тэги должны быть отдельными словами, заключенными в кавычки (' ').

    Значение элемента должно содержать не более 256 символов текста. Запрещено включать HTML и другую разметку.

    Элемент не является обязательным.

    LongName Содержит расширенный заголовок, идентифицирующий поисковый сервис.

    Клиенты могут использовать элемент ShortName если данный элемент недоступен. Значение элемента должно содержать не более 48 символов текста. Запрещено включать HTML и другую разметку.

    Элемент не является обязательным. Элемент не является обязательным.

    Image Содержит URL, задающий размещение картинки, ассоциированной с содержимым поискового контента. height (необязательный)- высота в пикселах width (необязательный) - ширина в пикселах type (необязательный) - MIME тип изображения.

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

    Рекомендуется квадратная форма картинки. Предпочтение отдается изображениям размером 16x16 типа "image/x-icon" или "image/vnd.microsoft.icon" или размером 64x64 типа "image/jpeg" или "image/png".

    Элемент не является обязательным.

    Query Определяет поисковый запрос клиента.

    OpenSearch документ должен содержать как минимум один элемент Query с атрибутом role="example", что поразумевает возвращение клиенту презультатов поиска.

    Например, <Query role="example" searchTerms="cat" />

    Поисковый клиент может использовть такой запрос для проверки корректности работы поиской службы.

    Элемент не является обязательным.

    Developer Содержит имя или идентификатор разработчика данного документа. Значение элемента должно содержать не более 64 символов текста. Запрещено включать HTML и другую разметку.

    Элемент не является обязательным.

    Attribution Содержит список всех источников которые могут привлекаться для формирования поискового потока. Значение элемента должно содержать не более 256 символов текста. Запрещено включать HTML и другую разметку.

    Элемент не является обязательным.

    SyndicationRight Содержит значение, указывающее на степень доступности результатов поиска для запросов, отображения и распространения.

    Значение может быть одной из строк (без учета регистра):

  • "open" - клиент может запрашивать результаты поиска, показывать их пользователям, пересылать их другим клиентам.
  • "limited" - клиент может запрашивать результаты поиска, показывать их пользователям, но не может пересылать их другим клиентам.
  • "private" - клиент может запрашивать результаты поиска, но не может показывать их пользователям и не может пересылать их другим клиентам.
  • "closed" - клиент не может запрашивать результаты поиска.
  • По умолчанию: "open"

    Элемент не является обязательным.

    AdultContent Содержит булевское значение "true", если результаты поиска могут содержать материалы предназначенные только для взрослых.

    Значения: варианты "false", "FALSE", "0", "no" или "NO" интерпретируются как FALSE; все остальные варианты интерпретируются как TRUE.

    По умолчанию: "false".

    Элемент не является обязательным.

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

    Документ с OpenSearch описанием должен включать данный элемент для каждого поддерживаемого языка.

    Если поисковая служба поддерживает любой язык, то значением элемента является "*".

    Шаблонный параметр "language" в OpenSearch URL может использоваться для выбора клиентом языков из числа доступных.

    Значение должно соответствовать правилам идентификации языков в XML 1.0 (RFC 3066).

    По умолчанию: "*".

    Элемент не является обязательным.

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

    Документ с OpenSearch описанием должен включать данный элемент для каждой кодировки.

    Шаблонный параметр "language" в OpenSearch URL может использоваться для указания клиентом кодировки своего поискового запроса.

    Значение должно соответствовать правилам кодировки в XML 1.0. По умолчанию: "UTF-8".

    Элемент не является обязательным.

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

    Документ с OpenSearch описанием должен включать данный элемент для каждой кодировки.

    Шаблонный параметр "language" в OpenSearch URL может использоваться для выбора клиентом кодировки ответа на свой поисковый запрос.

    Значение должно соответствовать правилам кодировки в XML 1.0. По умолчанию: "UTF-8".

    Элемент не является обязательным.

    Пример документа с OpenSearch описанием :

    <?xml version="1.0" encoding="UTF-8"?>
    
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    
       <ShortName>Web Search</ShortName>
    
       <Description>Use Example.com to search the Web.</Description>
    
       <Tags>example web</Tags>
    
       <Contact>admin@example.com</Contact>
    
       <Url type="application/atom+xml"
            template="http://example.com/?q={searchTerms}amp;pw={startPage?}amp;format=atom"/>
    
       <Url type="application/rss+xml"
            template="http://example.com/?q={searchTerms}amp;pw={startPage?}amp;format=rss"/>
    
       <Url type="text/html" 
            template="http://example.com/?q={searchTerms}amp;pw={startPage?}"/>
    
       <LongName>Example.com Web Search</LongName>
    
       <Image height="64" width="64" type="image/png">http://example.com/websearch.png</Image>
    
       <Image height="16" width="16" 
    type="image/vnd.microsoft.icon">http://example.com/websearch.ico</Image>
    
       <Query role="example" searchTerms="cat" />
    
       <Developer>Example.com Development Team</Developer>
    
       <Attribution>
         Search data Copyright 2005, Example.com, Inc., All Rights Reserved
       </Attribution>
    
       <SyndicationRight>open</SyndicationRight>
    
       <AdultContent>false</AdultContent>
    
       <Language>en-us</Language>
    
       <OutputEncoding>UTF-8</OutputEncoding>
    
       <InputEncoding>UTF-8</InputEncoding>
    
     </OpenSearchDescription>
    

    Синтаксис для шаблона OpenSearch URL

    Формат шаблона OpenSearch URL может быть использован для параметризованной формы представления URL в запросе к поисковому сервису.

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

    По умолчанию, имена параметров рассматриваются как часть пространства имен для шаблонов OpenSearch 1.1, а определения для основных параметров поиска приводятся в спецификации. Однако поисковые службы и поисковые клиенты могут устанавливать новые имена параметров, опираясь на механизм расширяемости в рамках соглашения о префиксах пространств имен XML.

    Примеры.

    Шаблон поискового URL, содержащего шаблонизированный параметр:

    http://example.com/search?q={searchTerms}
    

    Шаблон поискового URL, содержащего необязательный шаблонизированный параметр:

    http://example.com/feed/{startPage?}
    

    Пример шаблона поискового URL, содержащего необязательный шаблонизированный параметр из расширенного пространства имен в контексте элемента Url:

    <Url type="application/rss+xml"
      xmlns:example="http://example.com/opensearchextensions/1.0/"
      template="http://example.com?q={searchTerms}amp;c={example:color?}"/>
    

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

    Обязательный параметр отличает от необязательно только наличием знака ? после локального имени:

    {searchTerms} - обязательный параметр.

    {startPage?} - необязательный параметр.

    Параметры OpenSearch 1.1

    Параметр Назначение и ограничения
    searchTerms Заменяется ключевыми словами из запроса клиента
    count Заменяется желаемым числом результатов поиска на каждой странице
    startIndex Заменяется индексом первого поискового результата
    startPage Заменяется номером страницы для множества поисковых результатов
    language Заменяется желаемым языком представления результатов поиска для клиента
    inputEncoding Заменяется значением кодировки, используемой клиентом для формирования своего запроса
    outputEncoding Заменяется желаемой кодировкой представления результатов поиска для клиента

    Источники

  • Библиотека MSDN (http://msdn.microsoft.com/ru-ru/library/default.aspx)
  • OpenSearch specification 1.1. (http://www.opensearch.org/Specifications/OpenSearch/1.1)
  • Вернуться к учебному плану