Опубликован: 10.12.2007 | Уровень: специалист | Доступ: платный
Лекция 14:

Шаблоны

Аннотация: В этой лекции рассказывается о том, как определить контент XUL документа, используя поток RDF данных, что достигается комбинацией исходных XUL тегов, XUL тегов шаблона и RDF тегов. Рассмотрены основные атрибуты и свойства данных тегов и рассмотрены примеры их практического применения
Ключевые слова: контент, поток, RDF, подмножество, интерфейс, информация, файл, база данных, приложение, анализ, HTML, web-сервера, 3GL, chrome, DOM, дерево, меню, inspection, синтаксис, #ifdef, %URI, URN, VBOX, IDS, спецификация запроса, computational science, vi, кортеж, запрос SQL, реляционная алгебра, Спот, fact, ground, conditioning, member, резюме, дедукция, SQL-запрос, Bind, drilling, корень дерева, bag, Мультимножество, потомок, tail, RDBMS, toolbar, уникальный ключ, рекурсивный запрос, development environment, адресная книга, hiding, Bookmark, псевдокод, валидность, CSS2, эллипсис, алиас, парсинг, DataSource, профиль пользователя, сервер каталогов, predicate, child, FLEX, почтовый клиент, альтернативный синтаксис, ascend, descendant, natural, список запросов, контейнер объектов, IsEmpty, subject, логическое кольцо, outer, extra, IDL, свойства множества, hi-res, observation, Клик, rebuild, assertion, flush, dragging, MTP, IMAP, LDAP, управляемые данные, синтаксические ошибки, просмотр файлов, keyword, static content, repeatability, resolvability, заставка, ловушка



В этой лекции рассказывается о том, как определить контент XUL документа, используя поток RDF данных. Это достигается комбинацией исходных XUL тегов, XUL тегов шаблона и RDF тегов.

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

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

При традиционной web-разработке динамически изменяемый документ HTML может быть сконструирован двумя способами. HTML может генерироваться на стороне web-сервера (чем-то вроде CGI-программы), или HTML на стороне клиента может иметь многочисленные скрипты (динамический HTML). В любом случае, мы должны работать с кодом третьего поколения (3GL code), чтобы достигнуть желаемого результата.

Система шаблонов Mozilla не требует 3GL кода и web-сервера. Ей, конечно, необходима Mozilla. Все что нужно сверх этого, - RDF документы и последовательность правил, что делать с этими RDF. Правила выражаются в виде XUL тегов. Платформа Mozilla автоматически наполняет XUL-документ RDF-сообщениями, когда документ загружается. Таким образом, система XUL-шаблонов управляется данными. Некоторые шаблоны требуют полного доступа к системе. Чтобы это было безопасно, приложение должно быть расположено в области chrome, в противном случае о безопасности придется позаботиться специально.

Контент RDF, обрабатываемый шаблоном, может иметь два типа источников. Он может храниться в обычном RDF-документе в виде файла или системы файлов. В этом случае он может быть RDF-сообщениями (т.н. фактами) на любую тему. Пример: приложение NoteTaker, которое мы описываем в этой книге, работает с RDF именно таким образом. Другой способ порождения контента - "на лету", самой платформой Mozilla. В таком случае это RDF-сообщения на темы, связанные с самой платформой. Примером может служить управление окнами платформы. DOM Inspector обрабатывает внутреннюю RDF информацию, чтобы построить дерево, которое мы видим в меню File | Inspect a Window. Это дерево описывает текущие открытые окна.

Понимание системы шаблонов означает понимание системы правил шаблонов. Последовательность правил может быть простой или сложной. В самом простом случае правила лишь подразумеваются и не выражены явно. В сложных случаях правила подобны или запросу к базе данных или оператору switch в языке JavaScript. В обоих случаях приходится использовать специальные переменные шаблонов.

Как и во многих других случаях XUL, система шаблонов начинается с простого и ясного синтаксиса:

<template> 
  <rule> ... </rule> 
  <rule> ... </rule> 
</template>

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

Шаблоны не имеют собственного содержания: нет никаких блокоподобных тегов шаблонов. Теги шаблонов больше похожи на макро-инструкции и оператор #ifdef препроцессора языка C. Эти теги всегда используются внутри других XUL тегов; они не могут быть тегами верхнего уровня, наподобие тега <window>.

На схеме в начале этой лекции показана область, затрагиваемая системой шаблонов в платформе. Из нее видно, что шаблоны - маленькая, компактная система, отделенная от остальной платформы Mozilla. Их работа - последний этап в процессе формирования документа при его загрузке. Шаблоны никак не затрагивают систему отображения XUL контента. Поскольку шаблоны работают в паре с RDF, и RDF файлы, и URL/URI имена интенсивно ими используются. Как и для большинства характерных черт платформы, за работу функциональности шаблонов в основном ответственны несколько XPCOM объектов.

Дмитрий Гуменюк
Дмитрий Гуменюк
Россия, Звенигород
Konstantin Grishko
Konstantin Grishko
Россия, Москва, Московский финансово-промышленный университет "Синергия", Москва