Простой пример намного интереснее и познавательнее, чем многие слова
Ваш шаблон всегда будет синтаксически правильным xml/html документом (с присутствующим корневым элементом)! Вот пример файла под названием 'my_template_file.xhtml'.
<?xml version="1.0"?>
<html>
<head>
<title tal:content="title">
Место для заголовка страницы
</title>
</head>
<body>
<h1 tal:content="title">Пример заголовка</h1>
<table>
<thead>
<tr>
<th>Имя</th>
<th>Телефон</th>
</tr>
</thead>
<tbody>
<tr tal:repeat="person people">
<td tal:content="person/name">Чье-то имя</td>
<td tal:content="person/phone">Чей-то телефон</td>
</tr>
<tr tal:replace="">
<td>Олег Радченко</td>
<td>5226611</td>
</tr>
<tr tal:replace="">
<td>Олег Радченко</td>
<td>5226611</td>
</tr>
</tbody>
</table>
</body>
</html>
Все, что Вам понадобиться сделать в php - это включить (include) библиотеку PHPTAL и, возможно, установить несколько переменных, чтобы настроить шаблонную систему.
<?php
require_once 'PHPTAL.php';
// создать обработчик шаблонов
$template = new PHPTAL('my_template_file.xhtml');
// класс Person
class Person {
public $name;
public $phone;
function Person($name, $phone) {
$this->name = $name;
$this->phone = $phone;
}
}
// Создаем массив объектов для тестирования
$people = array();
$people[] = new Person("foo", "01-344-121-021");
$people[] = new Person("bar", "05-999-165-541");
$people[] = new Person("baz", "01-389-321-024");
$people[] = new Person("quz", "05-321-378-654");
// Передаем массив данных обработчику шаблонов
$template->title = 'Я Заголовок';
$template->people = $people;
// Выполняем обработку шаблона
try {
echo $template->execute();
}
catch (Exception $e){
echo $e;
}
?>
Выполнив такой PHP скрипт, Вы получите что-то вроде этого:
<?xml version="1.0"?>
<html>
<head>
<title>Я Заголовок</title>
</head>
<body>
<h1>Я Заголовок</h1>
<table>
<thead>
<tr>
<th>Имя</th>
<th>Телефон</th>
</tr>
</thead>
<tbody>
<tr>
<td>foo</td>
<td>01-344-121-021</td>
</tr><tr> <td>bar</td>
<td>05-999-165-541</td>
</tr><tr> <td>baz</td>
<td>01-389-321-024</td>
</tr><tr> <td>quz</td>
<td>05-321-378-654</td>
</tr>
</tbody>
</table>
</body>
</html>
PHPTAL не заботится о переносах строки и отступах ни в читаемых, ни в генерируемых файлах. Чтобы получить красивый HTML (с переносами и правильными отступами), можно использовать HTML Tidy на этапе постпроцессинга.