Мне давным давно не дает покоя одна задачка. Сделать такой обработчик XSLT, чтобы при минимуме программирования (или даже его отсутствии) можно было делать относительно простые сайты. Понятное дело, что они не будут реализовывать какой-нибудь сложный функционал типа загрузки файлов, регистрации пользователей, отправки писем или упаковки чего-нибудь в базу данных. Для программиста это все тривиально, а для простого верстальщика это сложно. Поэтому я решил сделать заготовку на PHP, языке который только ленивый не знает.
Основное требование к обработчику XSLT - получение POST и GET запросов в виде XML. На их основе можно брать XML файлы, выполнять разные преобразования. ЧПУ можно будет реализовать с помощью .htaccess.
/?template=test
будут приводить к попытке обработать файл xsl/test.xsl
туда же будут передаваться все переменные запросов GET и POST (если такие были).
Можно добавить в XML еще каких-нибудь серверных данных, но мне пока в голову ничего не приходит. Может текущее время?
Основное требование к обработчику XSLT - получение POST и GET запросов в виде XML. На их основе можно брать XML файлы, выполнять разные преобразования. ЧПУ можно будет реализовать с помощью .htaccess.
<? // error_reporting(E_ALL); // ini_set("display_errors", 1); $template = 'default'; parse_str($_SERVER['QUERY_STRING']); $xslDoc = new DOMDocument('1.0', 'UTF-8'); $xslDoc->load("xsl/$template.xsl"); $proc = new XSLTProcessor(); $proc->importStylesheet($xslDoc); $xml = '<data>'; if (isset($_POST)) { $xml .= '<post>'; foreach ($_POST as $key => $value) { $xml .= "<item name=\"$key\">$value</item>"; } $xml .= '</post>'; } elseif (isset($_GET)) { $xml .= '<get>'; foreach ($_GET as $key => $value) { $xml .= "<item name=\"$key\">$value</item>"; } $xml .= '</get>'; } $xml .= '</data>'; $xml = new SimpleXMLElement($xml); echo $proc->transformToDoc($xml)->saveXML(); ?>Если положить такой файл в корень директории с именем index.php, то обращения к этой директории в духе:
/?template=test
будут приводить к попытке обработать файл xsl/test.xsl
туда же будут передаваться все переменные запросов GET и POST (если такие были).
Можно добавить в XML еще каких-нибудь серверных данных, но мне пока в голову ничего не приходит. Может текущее время?
