Temat: [pytanie] Rozdzielanie HTML'a od PHP,
Hm, chyba nikt nie napisał o jednym sposobie jaki użyłem z kolegami w jednym projekcie.
W PHP generujesz sobie XML, a potem ten XML za pomocą XSLT przerabiasz w HMTL.
<?
$dom_xml = new DomDocument('1.0', 'UTF-8');
// tu tworzysz wezly
// $params moze trzymac dodatkowe zmienne dostepne
// globalnie w xslt, np. $script
$params['foo'] = $_SERVER['DOCUMENT_ROOT'];
// funkcja (u nas byla to metoda w klasie), ktorej podajesz
// drzewo xml, arkusz xslt ktory ma przetwarzac to i tablice
// parametrow
RenderHtml($dom_xml, "xsl/foto_show.xsl", $params);
// koniec pliku
?>
function RenderHtml(&$doc, $xsl_file, &$params)
{
// xslt processor
$xp = new XsltProcessor();
// DOM document do wczytania xsl
$xsl = new DomDocument;
if ($xsl->load($xsl_file) === false)
{
// wyskakujemy jak sa bledy xsl zeby nie zasmiecac dalej ekranu
// zaloguj blad gdzies jakos
return;
}
// import xsl do xslt processora
$xp->importStylesheet($xsl);
// dodatkowe parametry do namespace ''
if ($params != NULL) {
$xp->setParameter('', $params);
}
// transformata
if ($html = $xp->transformToDoc($doc)) {
echo $html->saveHTML();
} else {
// zaloguj blad
}
}
No i do tego plik XSLT.
Dzieki temu PHP zawsze generuje tylko XML, ktory moze przetwarzac dowolna aplikacja.
Dzieki temu HTML czy inny format jaki zdecydujesz sie wygenerowac moze byc dodatkowo dynamicznie obrabiany za pomoca funkcji xslt: warunkowych, matematycznych, pozycji i ilosci wezlow, itd...
Wiec:
- masz rozdzielenie contentu od logiki
- content moze byc dodatkowo dynamicznie obrabiany
- content i logike moge robic rozni ludzie
Konkretniejsze przyklady (pliki) moge zapodac jak ktos chce.
Maciej Sołtysiak edytował(a) ten post dnia 14.05.07 o godzinie 12:46