XML база данных для небольшого сайта

Более двух лет назад создал сайт с каталогом продукции без использования реляционной базы, все данные сайта хранятся в одном XML файле. Сами данные заносятся вручную в файл data.xml, и по мере необходимости структура данных дополняется.

База данных в XML формате: data.xml (143,2 Кб)

Шаблон: template.xslt (19,8 Кб)

Всё это обслуживается следующим кодом (LAMP):

.htaccess:

RewriteEngine On

RewriteRule ^$ index.php?path=/ [QSA,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*/)$ index.php?path=/$1 [QSA,L]

index.php:

<?php
header('Content-Type: text/html; charset=utf-8');

$doc = new DomDocument();
$doc->load('data.xml', LIBXML_DTDLOAD + LIBXML_NOENT);

$doc->documentElement->setAttribute('counters', file_get_contents('counters.txt'));
$doc->documentElement->setAttribute('path', $_GET['path']);
$doc->documentElement->setAttribute('root', '/');

$get = $doc->createElement('get');
$doc->documentElement->appendChild($get);
foreach ($_GET as $key=>$value) {
    $get->setAttribute($key, $value);
}
if (! isset($_GET['page'])) {
    $get->setAttribute('page', 1);
}

$xslt = new DomDocument();
$xslt->load('template.xslt', LIBXML_DTDLOAD + LIBXML_NOENT);
$proc = new XsltProcessor();
$proc->importStylesheet($xslt);
$proc->transformToUri($doc, 'php://output');

Есть еще PHP файлы для отправки письма при заказе товара, автоматического создания уменьшенных картинок, вставки в картинку водяного знака, но это отдельная тема.

Пример сайта: http://sumkatdt.ru/

01 апреля 2012

xml xslt php