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

Включение файлов с разделителями

Во многих динамических web-сайтах предусмотрена функция публикации содержимого файлов с разделителями (например, файла headlines с сайта Linux Today) в некотором формате, фильтруемом на программном уровне. Реализация таких фильтров обычно меняется от страницы к странице и от сайта к сайту, а для извлечения данных и их последующей сборки в удобном формате используются довольно сложные алгоритмы.

В LXP для отображения таких файлов используется тег <indude> с атрибутом method="parsed". Содержимое файла разбивается на серию последовательных значений, доступ к которым осуществляется при помощи универсального тега LXP <field>.

Информационные блоки разделяются значением, передаваемым в атрибуте delimiter. Внутри блока поля отделяются друг от друга символами новой строки (\n). Необязательный атрибут separator позволяет выбрать другой разделитель полей.

Метод parsed тега <include> требует закрывающего тега </include>, поскольку для каждого блока, который LXP читает из файла, происходит возврат к начальному тегу <include> с повторным выполнением перечисленных действий вплоть до обработки последнего блока.

Если вы захотите ограничить количество отображаемых блоков, задайте номер последнего блока при помощи атрибута lastblock. Кроме того, атрибут firstblock позволяет пропустить несколько начальных блоков (скажем, блок комментариев, который может находиться в начале текстового файла до первого разделителя).

Пример файла с разделителями с сайта www.linuxtoday.com:

Welcome to lthead.txt. Fields are delimited by two ampersands.
The first field is the headline. The second field is the URL to the story.
The third field is the date the story was posted.
Have Fun! (webmaster@linuxtoday.com)
&&
LinuxProgramming: python-dev summary 2001-06-21-2001-07-05
 http://linuxtoday.com/news_story.php3?ltsn=2001-07-05-019-21-OS-SW
Jul 5. 2001. 21:30:38
&&
Chicago Sun-Times: Test drive Linux using friendly tryout software
http://linuxtoday.com/news_story.php3?ltsn=2001-07-05-018-21-PS-CY
Jul 5. 2001, 21:00:48
&&
[…]

Фрагмент, приведенный в листинге 13.23, открывает файл /home/web/headlines/lthead.txt и разбивает его на блоки. В качестве разделителя блоков используется последовательность символов &&.

Листинг 13.23. Включение файла с разделителями.

<lхр>
<include src="/home/web/headlines/lthead.txt" delimiter="&&"
firstblock="2" lastblock="4" method="parsed">
<table border="0" cellspacing="l"><tr>
<td bgcolor="#ffffff" width="100r> <div class="content">
– <field />
</div>
</td>
</tr>
<tr>
<td bgcolor="#eOeOe8" width="100r> <strong>
<field type="url" link="Read More…" target="_blank" />
</strong>
<br/>
</td>
</tr>
</table>
</include>
</lxp>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.