Внешние теги
Рассмотрим следующий фрагмент:
<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>