Podejście do rozwiązania warstwy prezentacji, w oparciu o dane generowane w postaci plików xml, a następnie przetwarzane w wybraną formę prezentacji, jest rzeczywiście bardzo dobrym pomysłem. Nie jest też to nic nowego, a już na pewno nie można powiedzieć, że nikt tego nie robi. Na takim podejściu bazuje, między innymi jeden z większych i popularniejszych frameworków napisanych w javie
http://cocoon.apache.org/. Powstało też kilka portów Cocoon’a napisanych w języku php. Możnaby wspomnieć chociażby:
http://www.popoon.org/.
Moim zdaniem, wyodrębnienie w procesie generowania prezentacji dla naszej aplikacji, etapu przygotowania danych w formie dobrze opisanej struktury xml, daje naprawde duże możliwości tworzenia alternatywnych widoków. Zmieniając tylko proces transformacji pliku xml możemy ten sam zestaw danych przedstawić w formie stron xhtml, stron wap, pliku pdf czy doc, stworzyć rss czy też formę tekstową do wydruku.
Nie wydaje mi się żeby dobrze zaprojektowana biblioteka ustępowała wydajnościowo znanym systemom szablonów. W końcu, większość tego typu bibliotek, również musi parsować szablony podmieniając odpowiednie znaczniki danymi.
Rozważanie implementacji takiego mechanizmu tylko dlatego aby ułatwić współpracę między grafikami a programistami, wydaje mi się jednak, przerostem formy nad treścią. Osobiście nie znam żadnego grafika, który poradziłby sobie z transformacją xml i przygotowaniem poprawnych styli xsl. To zadanie spoczywałoby ciągle na programiście, ale prawdopodobnie nie byłby to już (i tak wyeksploatowany do granic możliwości ;) biedny deweloper php.
Skuteczne rozdzielenie kompetencji między programistów a grafików i projektantów xhtml zapewniają szablony. Jeśli problemem jest dla grafika, programisty xhtml, tworzenie strony pełnej dziwnych znaczników i nieznanej składni (tak jak w przypadku Smarty), można rozważyć użycie innych systemów szablonów. Chociażby opartych o tworzenie poprawnych dokumentów xml, z operacjami na szablonie opisywanymi w formie specjalnych atrybutów, dobrze wszystkim znanych tagów html (
http://phptal.motion-twin.com/). Istnieją też szablony opartych o komponenty (podobne do tych znanych programistom .NET), a należą do nich systemy szablonów z popularnych frameworków wact
http://www.phpwact.org/wact/template_component_architecture i PRADO
http://www.xisc.com/wiki/index.php/The_PRA...a_template_fileNa koniec jeszcze, wracając do pomysłu dwustopniowego generowania widoku aplikacji, należy pamiętać, że Martin Fowler
http://martinfowler.com/ opisał wzorzec projektowy, który odnosi się do tej konkretnej sytuacji Two Step View
http://martinfowler.com/eaaCatalog/twoStepView.html. Zgodnie ze wzorcem należy w pierwszej fazie pobrać z obiektów dziedziny potrzebne dane i przedstawić je w sformalizowanej formie, bez żadnej informacji o sposobie prezentacji. W Twoim przypadku jest to
baza->php->xml. Następnie w drugim kroku tak przygotowaną informacje prezentujemy w wybranym formacie, czyli
xml->xslt->html.