Самоучитель по SQL-сервер в Linux



Знакомство с разметкой 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.


Книжный магазин