Home

Advertisement

Разбор и разжевывание Ajax

  • Nov. 12th, 2009 at 12:07 AM
  • Leave a comment
  • Add to Memories
  • Share this!
  • Link

Обработчик XSLT на PHP

  • Oct. 13th, 2009 at 10:54 AM
yarix
Мне давным давно не дает покоя одна задачка. Сделать такой обработчик XSLT, чтобы при минимуме программирования (или даже его отсутствии) можно было делать относительно простые сайты. Понятное дело, что они не будут реализовывать какой-нибудь сложный функционал типа загрузки файлов, регистрации пользователей, отправки писем или упаковки чего-нибудь в базу данных. Для программиста это все тривиально, а для простого верстальщика это сложно. Поэтому я решил сделать заготовку на PHP, языке который только ленивый не знает.

Основное требование к обработчику 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 еще каких-нибудь серверных данных, но мне пока  в голову ничего не приходит. Может текущее время?

Tags:

  • 7 comments
  • Leave a comment
  • Add to Memories
  • Share this!
  • Link

Latest Month

March 2010
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   

Tags

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by Tiffany Chow