Опубликован: 10.12.2007 | Доступ: свободный | Студентов: 822 / 20 | Оценка: 5.00 / 5.00 | Длительность: 58:33:00
Лекция 15:

XBL-связки

Аннотация: В этой лекции объясняется, как улучшить язык XUL с помощью новых тегов и новых свойств, используя XBL (XML Binding Language - Язык связок XML). Рассмотрены характерные для этих задач теги, их основные свойства и атрибуты, а также примеры их практического применения
Ключевые слова: XML, Bind, language, HTML, эффективный механизм, GUI, widget, контент, апплет, плагины, конструирование, CSS2, тег, smiley, css, почтовый клиент, браузер, toolkit, JAR, chrome, файл, postscript, Lisp, tcl, net, Windows, интерфейс, 3GL, группа, место, описание системы, checkbox, implementability, handler, DOM, Макинтош, S/MIME, схема URL, RDF, w3c, draft, track, ECMA, ECMAScript, WSDL, XSL, bound, tagged, анонимный, XML-документ, Клик, интерфейс объекта, агрегирование, инкапсуляция, множественное наследование, длина цепочки, constructor, destructor, деструктор, OMG, CORBA, JavaBeans, collapse, hidden, множество состояний, VBOX, ловушка, icon, источник события, передача параметров, LTR, поддерево, CDATA, rating, toggle, getter, setter, val, undefined, PARAMETER, тело метода, FETCH, закрывающий тег, single-threaded, имя события, phase, capture, radio, thumb, dialog, toolbar, slider, прикладное программирование, атрибут класса, сигнатура метода, getElementById, скин, модифицируемость, подсистема печати, реальное значение, 'inline', stacking, сечение, переменные состояния, screenshot



В этой лекции объясняется, как улучшить язык XUL с помощью новых тегов и новых свойств, используя XBL (XML Binding Language - Язык связок XML).

XBL - основанный на XML язык, позволяющий конструировать новые мощные теги для XUL, HTML и XML. Это эффективный механизм и для создания новых графических элементов управления (GUI widgets). Он используется только в Mozilla.

Простой XUL позволяет пользователю создавать собственные теги, наподобие <mytag>, но они не слишком полезны. Их можно оформить стилями, но они остаются простыми <box> -подобными тегами. С помощью же XBL, напротив, можно создавать целые виджеты с уникальным поведением и обликом. Контент XBL-виджетов комбинируется из XUL, HTML и других XBL-тегов. XBL не столь гибок как Java-апплет или плагин. Его конструирование нельзя начать с чистого прямоугольного листа и заполнять его, используя мощные графические библиотеки. XBL может лишь комбинировать уже существующие теги.

XBL не создает новых тегов, с его помощью создаются лишь новые связки (bindings). Связка - это набор тегов и скриптов, которые вместе образуют уникальный обработчик событий и отображаемый контент. Связка подобна объекту. В Mozilla binding ставится в соответствие тегу с помощью специфичного для Mozilla свойства CSS2, а именно -moz-binding. После того как это сделано, говорят, что тег и связка - связаны. Простейшая связка приведена в листинге 15.1. Это фрагмент документа XBL, реализующий виджет "улыбочку".

<binding id="smiley"> 
  <content> 
    <xul:image src="face.png"/> 
  </content>
  <handlers> 
    <handler event="click" action="alert('have a day')"/>
  </handlers> 
</binding>
Листинг 15.1. Простейший пример XBL-связки.

Эту связку можно привязать к тегу с именем <smiley/> с помощью следующей строки CSS:

smiley { -moz-binding: url("smiley.xml#smiley"); }

Теперь тег <smiley/> всегда будет отображать улыбку в документе XUL. Если по нему кликнуть, появится окошко с приветствием. Это несложный виджет со своей простейшей интерактивностью. Ни в XUL, ни в HTML тега <smiley> нет.

Система XBL встроена в C/C++ код платформы Mozilla, но сами пользовательские связки пишутся на JavaScript и XML. Эта интерпретируемая среда позволяет создавать связки так же легко, как XUL или HTML. Простота применения интенсивно используется в Mozilla. Множество XBL-связок вносят свой вклад в приложения Mozilla, такие как классический почтовый клиент или классический браузер. Почти каждый XUL тег имеет XBL-связку.

На протяжении всей этой книги мы часто ссылались на файлы .xml в архиве toolkit.jar директории chrome. Эти .xml и есть XBL-связки, обычно их бывает по нескольку на файл. Некоторые теги XUL, описанные в этой книге есть не что иное, как XBL связки за работой. Хороший пример - высокоспециализированные теги как <tabbrowser> и <colorpicker>, которые определены полностью средствами XBL. Даже простые теги, например, <button>, имеют XBL-связки.

За пределами мира Mozilla технология, подобная XBL - это язык PostScript. PostScript используется в процессе печати, но PostScript- скрипты можно писать и вручную. PostScript дает возможность кусочкам печатаемого контента иметь имя и использоваться повторно. Таким образом легко создавать большие документы. Языки обработки списков, такие как Lisp и Tcl/Tk, также дают интерпретационный способ создания GUI, но они больше похожи на программы, чем XBL, основанный на XML. Вероятно, Tcl/Tk - самый большой конкурент XBL в мире Linux. Готовые компоненты в .NET - также конкуренты XBL в мире Microsoft Windows.

Связки XBL имеют ясно определенный интерфейс и уникальность, что делает XBL небольшой компонентной системой. Как XPCOM предназначен для компонентов 3GL, XBL предназначен для компонентов XML. Компонентная модель XBL много проще, чем XPCOM.

Поскольку связки XBL создаются с помощью XML и JavaScript, их можно свободно перемешивать с HTML или XUL. HTML используется нечасто, потому что группа тегов, применяемых как HTML, фиксирована и стандартна. Гораздо чаще можно увидеть XBL в приложениях XUL.

На картинке в начале этой лекции показано место XBL в платформе Mozilla. Несмотря на свой статус компонентной системы, XBL - одна из главных технологий в Mozilla. Во время загрузки документа XUL связки XBL идентифицируются и встраиваются в содержание конечного документа. Это немного похоже на работу системы оверлеев. После того как теги, используемые в связках XBL, загрузятся, они отображают свой контент так же, как любой другой тег XUL. Система XBL также имеет поддержку обработки событий, создаваемых пользователем при вводе. Она использует систему практически такую же, как система обработки тега <key>.

Здесь мы продолжим общее описание системы XBL и затем перейдем к рассмотрению специальных тегов.