Шифрование и секретность в Linux


Листинг 13 31 Подстановка во внешнем теге с пустым блоком



Листинг 13.31. Подстановка во внешнем теге с пустым блоком

<1хр>

<xtag xname-"img" src="images/spacer.gif" width="$width" />

</lxp>

Результат выполнения этого фрагмента в документе LXP (предполагается, что переменной width присвоено значение 10):

<1mg src="images/spacer/gif" width="10" />

Обратите внимание на завершающий символ / в теге <xtag>. Тег <xtag> может быть открывающим, закрывающим пли тегом с пустым блоком в зависимости от того, какой тег в конечном счете требуется вывести. Важнейшая особенность этих тегов заключается в том, что LXP отслеживает все «незакрытые» теги <xtag> и выбирает соответствующее имя тега при достижении закрывающего тега </xtag>.

Если тег <xtag> создается для внешнего тега с пустым блоком (например, для тега HTML <img>), вы обязаны оформить <xtag> в виде тега с пустым блоком

и завершающим символом /. В противном случае LXP примет ближайший закрывающий тег </xtag> за парный тег последнего открывающего тега <xtag> (в нашем случае — <img>), что приведет к неверному сопоставлению тегов. Рассмотрим следующий фрагмент:

<1хр>

<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> считает, что закрывается не Ter<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>.









Начало  Назад  Вперед


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