Знакомство с разметкой LXP
Хотя LXP решает задачи, традиционно относящиеся к области программирования, при проектировании LXP авторы стремились к тому, чтобы эти задачи решались без изменения общего синтаксиса, используемого при разметке HTML (или XHTML). На сервере документ LXP выглядит как обычный файл HTML с некоторыми незнакомыми тегами.
Рассмотрим пример простого документа LXP:
<lхр>
<dock type="1nit"> <include src="parts/init.lxp" />
</dock>
<1nclude src="parts/head.html" />
<hl>Welcome</hl> <hr width="400">
<if Ixp.authenticated-'t'>
Welcome to my webpage. <putcookie name="user" />
</if> <else>
<strong>Please login.</strong>
<include src="parts/login.lxp" />
</e!se>
include src="Darts/foot.html" />
</lxp>
Теги LXP
Теги (формально называемые элементами) определяются как последовательность символов, начинающаяся с символа < и заканчивающаяся символом >. Теги всегда начинаются с имени, определяющего смысл тега. Кроме того, в них могут присутствовать атрибуты, разделенные пробелами. Атрибуты всегда определяются в формате имя=значение, где имя — имя атрибута, уникальное для данного тега, а значение — некоторое произвольное значение, присвоенное этому атрибуту.
Теги LXP соответствуют общей структуре тегов любого языка разметки. Пара тегов определяет регион (пли блок), который начинается открывающим тегом (например, <tag>) и завершается парным закрывающим тегом с префиксом / (например, </tag>).
Модуль лексического разбора LXP не требует обязательного включения завершающих символов / в теги с пустыми блоками, хотя в некоторых случаях отсутствие этого символа приводит к непредсказуемым последствиям. Например, при вложении тегов <1nclude> с опущенным завершающим символом / могут возникнуть проблемы с принятием решений. Дело в том, что тег <1ncl ude> может быть как тегом с пустым блоком (при включении внешнего документа), так и открывающим тегом, для которого должен существовать закрывающий тег (как при непосредственном включении запросов SQL).
ПРИМЕЧАНИЕ
Привыкните к тому, чтобы включать завершающий символ / в теги с пустым блоком. В HTML некоторые теги формально не требуют завершителя (например, используется тег <Ьг> вместо принятого в XHTML тега <Ьг />). Тем не менее с ростом популярности XHTML и XML требования к размеченным документам становятся более жесткими.
Открывающие теги, как и теги с пустым блоком, обладают именами и содержат атрибуты. Если имя описывает общий смысл тега, то атрибуты обычно определяют детали выполняемой операции, а их смысл зависит от конкретного тега. Закрывающий тег должен состоять из одного имени, указанного после начального символа / (например, </tag>).
В тегах LXP и именах атрибутов регистр символов обычно не учитывается, хотя в некоторых случаях имя атрибута напрямую соответствует имени переменной (как в теге <i f >). В этом случае регистр символов может оказаться существенным в зависимости от написания имен переменных. В приведенных ниже примерах используются символы нижнего регистра, что отчасти связано с влиянием стандарта XHTML (согласно которому имена элементов и атрибуты записываются в нижнем регистре).
В листинге 13.6 приведен простой блок разметки LXP с одним открывающим тегом, одним закрывающим тегом и двумя тегами с пустым блоком.
Листинг 13.6. Простой блок разметки LXP
<1хр>
<setvar example="test" />
<putvar name="example" />
<1хр>
LXP ориентируется на простоту и удобство интеграции при разработке приложений, и этот базовый структурный аспект LXP дает хороший пример такого подхода.
Блоки LXP
Вероятно, самым важным тегом LXP является тег <1 хр>, открывающий блок LXP. Как и тег <script> или короткий тег РНР, он указывает модулю LXP на начало данных LXP.
Однако в отличие от РНР в процессе обработки блока LXP модуль просто игнорирует любые теги, которые он не опознает как теги LXP. Тег <1 хр> просто активизирует возможность использования тегов LXP в заданном блоке, но при этом вы по-прежнему можете работать с обычными тегами HTML (хотя теги LXP могут управлять включением кода HTML в выходной ноток).
Как нетрудно догадаться, тег </1 хр> закрывает блок LXP и запрещает использование тегов LXP до следующего открывающего тега <1хр>.
ПРИМЕЧАНИЕ
Обработка тегов LXP не включается в документах LXP автоматически. Документ выводится быстрее, если блоки LXP будут ограничены теми областями, в которых используются возможности LXP, поскольку обработка блока LXP с динамическим содержимым занимает больше времени, чем обработка простого кода HTML.
|