Иллюстрированный самоучитель по PostgreSQL

Знакомство с разметкой LXP

Хотя LXP решает задачи, традиционно относящиеся к области программирования, при проектировании LXP авторы стремились к тому, чтобы эти задачи решались без изменения общего синтаксиса, используемого при разметке HTML (или XHTML). На сервере документ LXP выглядит как обычный файл HTML с некоторыми незнакомыми тегами.

Рассмотрим пример простого документа LXP:

<lхр>
<dock type="1nit"> <include src="parts/init.lxp" />
</dock>
<include 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" />
</else>
include src="Darts/foot.html" />
</lxp>

Теги LXP

Теги (формально называемые элементами) определяются как последовательность символов, начинающаяся с символа < и заканчивающаяся символом >. Теги всегда начинаются с имени, определяющего смысл тега. Кроме того, в них могут присутствовать атрибуты, разделенные пробелами. Атрибуты всегда определяются в формате:

имя=значение

Где имя – имя атрибута, уникальное для данного тега, а значение – некоторое произвольное значение, присвоенное этому атрибуту.

Теги LXP соответствуют общей структуре тегов любого языка разметки. Пара тегов определяет регион (пли блок), который начинается открывающим тегом (например, <tag>) и завершается парным закрывающим тегом с префиксом / (например, </tag>).

Модуль лексического разбора LXP не требует обязательного включения завершающих символов / в теги с пустыми блоками, хотя в некоторых случаях отсутствие этого символа приводит к непредсказуемым последствиям. Например, при вложении тегов <include> с опущенным завершающим символом / могут возникнуть проблемы с принятием решений. Дело в том, что тег <include> может быть как тегом с пустым блоком (при включении внешнего документа), так и открывающим тегом, для которого должен существовать закрывающий тег (как при непосредственном включении запросов SQL).

Примечание
Привыкните к тому, чтобы включать завершающий символ / в теги с пустым блоком. В HTML некоторые теги формально не требуют завершителя (например, используется тег <br> вместо принятого в XHTML тега <br />). Тем не менее с ростом популярности XHTML и XML требования к размеченным документам становятся более жесткими
.

Открывающие теги, как и теги с пустым блоком, обладают именами и содержат атрибуты. Если имя описывает общий смысл тега, то атрибуты обычно определяют детали выполняемой операции, а их смысл зависит от конкретного тега. Закрывающий тег должен состоять из одного имени, указанного после начального символа / (например, </tag>).

В тегах LXP и именах атрибутов регистр символов обычно не учитывается, хотя в некоторых случаях имя атрибута напрямую соответствует имени переменной (как в теге <if>). В этом случае регистр символов может оказаться существенным в зависимости от написания имен переменных. В приведенных ниже примерах используются символы нижнего регистра, что отчасти связано с влиянием стандарта XHTML (согласно которому имена элементов и атрибуты записываются в нижнем регистре).

В листинге 13.6 приведен простой блок разметки LXP с одним открывающим тегом, одним закрывающим тегом и двумя тегами с пустым блоком.

Листинг 13.6. Простой блок разметки LXP.

<lхр>
<setvar example="test" />
<putvar name="example" />
<lхр>

LXP ориентируется на простоту и удобство интеграции при разработке приложений, и этот базовый структурный аспект LXP дает хороший пример такого подхода.

Блоки LXP

Вероятно, самым важным тегом LXP является тег <lхр>, открывающий блок LXP. Как и тег <script> или короткий тег РНР, он указывает модулю LXP на начало данных LXP.

Однако в отличие от РНР в процессе обработки блока LXP модуль просто игнорирует любые теги, которые он не опознает как теги LXP. Тег <lхр> просто активизирует возможность использования тегов LXP в заданном блоке, но при этом вы по-прежнему можете работать с обычными тегами HTML (хотя теги LXP могут управлять включением кода HTML в выходной ноток).

Как нетрудно догадаться, тег </lхр> закрывает блок LXP и запрещает использование тегов LXP до следующего открывающего тега <lхр>.

Примечание
Обработка тегов LXP не включается в документах LXP автоматически. Документ выводится быстрее, если блоки LXP будут ограничены теми областями, в которых используются возможности LXP, поскольку обработка блока LXP с динамическим содержимым занимает больше времени, чем обработка простого кода HTML
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.