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

Внешние теги

Рассмотрим следующий фрагмент:

<lхр>
<xtag xname="table" width="$table_w1dth">
<tr>
<! --ОШИБКА: тег с пустым блоком должен заканчиваться символом / -->
<td><xtag xname="img" src="images/spacer.gif"
w1dth="$width"></td>
</tr>
</xtag>
</lxp>

В этом фрагменте используются три тега <xtag>. Два из них (открывающий и закрывающий) относятся к тегу <table>, а третий (открывающий) инкапсулирует тег <img>. Поскольку в HTML тег <img> не имеет парного завершающего тега, этот тег <tag> должен быть тегом с пустым блоком, но LXP не воспринимает его в этом качестве (обратите внимание на отсутствие завершающего символа /).

Проблема заключается в следующем: LXP помнит о существовании открытого элемента <xtag> и при достижении первого закрывающего тега </xtag> считает, что закрывается не тег <table>, а тег<img>.

Если переменная table_width равна 100, а переменная width равна 10, неправильный результат будет выглядеть так:

<table width="100">
<tr>
<! --ОШИБКА: тег с пустым блоком должен заканчиваться символом / -->
<td><img src="images/spacer.g1f"
w1dth="10"></td>
</tr>
</img>

В листинге 13.32 приведена правильная комбинация тегов <xtag>.

Листинг 13.32. Использование вложенных тегов <xtag>.

<lхр>
<xtag xname="table" width="$table_width">
<tr>
<--ПРАВИЛЬНО: тег с пустым блоком заканчивается символом / -->
<td><xtag xname="img" src="1mages/spacer.gif" width="$width"
/></td>
</tr>
</xtag>
</lxp>

Поскольку второй тег <xtag> в листинге 13.32 завершается символом /, как это должно быть при инкапсуляции внешних тегов с пустым блоком, LXP не связывает закрывающий тег с тегом <img>, и результат выглядит так:

<table width="100">
<tr>
<--ПРАВИЛЬНО: тег с пустым блоком заканчивается символом / -->
<td><img src="images/spacer.gif" width="10"
/></td>
</tr>
</table>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.