In het topic dat je aanhaalt heerst imo wel een beetje de XSLT-halleluja sfeer waarin ik zelf tot voor kort ook nog verkeerde. Begrijp me niet verkeerd, het is nog steeds een elegante manier om jezelf te dwingen inhoud en structuur te scheiden. Met de nadruk op structuur, een cruciaal verschil ten opzichte van opmaak, waar men in het 2001 topic nog van repte.
Inmiddels is het 2004, en zijn de meeste webdevelopers het er hopelijk wel mee eens dat XHTML niet zo heel veel (meer) met opmaak te maken heeft. CSS is inmiddels volwassen, en kan voor het overgrote deel ingezet worden om de opmaak van een document te bepalen.
XSLT is vooral sterk in het structureel manipuleren van de bron-XML naar een andere structuur. Dat is alleen echt nodig als de input structureel (sterk) verschilt van de gewenste output. Een goed voorbeeld is bijvoorbeeld een tool waarmee je grote hoeveelheden statistische gegevens (data-structuren) in een document-structuur zoals XHTML moet gieten.
Daarnaast is het ideale tool om in te zetten wanneer het belangrijk is dat er verschillende output-formaten, zoals XHTML, PDF, enz. in je applicatie ondersteund worden.
Ga je daarentegen een CMS maken waarin de inhoud sterk "document-centric" is, hetgeen bij website-CMS-en nou eenmaal vrij vaak voorkomt, dan kun je je afvragen of je XSLT nog wel nodig hebt.
Ik schrijf tegenwoordig m'n templates in plain XHTML, laadt die in de PHP5 DOM, gebruik DOMXPath om m'n "hooks" te vinden waarin eventuele dynamische content ingevoegd moet worden en gebruik de DOM methodes om die op de juiste plek erin te hangen. Serializen naar een XHTML-string en echo'en maar.
Dat is de simpele versie van m'n huidige "pagina-engine". In de ingewikkelde versie zit er na de DOM-stap toch nog wel een XSLT-stap. Deze gebruik ik eigenlijk alleen maar als "aggregator", oftewel ik gebruik XSLT alleen maar om verschillende XHTML sources te verzamelen en achter elkaar in 1 pagina te zetten (bv. pagecontent.xhtml + menu.xhtml). In feite zou ik daar ook wel DOM voor kunnen gebruiken, maar het voordeel van XSLT is dan weer dat ik het altijd nog mooi kan gebruiken voor de dingen waar XSLT echt handig voor is.
Zo ben ik nu bezig met een site die zowel een mobiele telefoon-versie als een "normale" versie moet krijgen. In de normale versie zit een pagina met een vrij uitgebreide tabel, die op de meeste mobiele telefoons totaal niet past. Op de mobiele telefoon-versie bouw ik daarom de tabel met XSLT om naar een simpele lijst met linkjes naar losse pagina's waar steeds maar 1 tabel-rij als lijst wordt weergegeven. Dat zijn de structurele verschillen waar XSLT goed van pas komt in een document-centric omgeving.
Een andere reden dat ik veel liever de PHP5 DOM gebruik dan XSLT voor het manipuleren van m'n templates, is dat XSLT als declaratieve programmeertaal weliswaar een hele leuke uitdaging oplevert bij het oplossen van probleempjes die je in een procedurele omgeving in no-time gefixed zou hebben, maar dat de complexe oplossingen met ingewikkelde recursies en template parameters, om toch maar zo goed mogelijk een procedurele situatie te imiteren eigenlijk gewoon te ranzig (en ineffcient) voor woorden zijn.
En zoals alienfruit al aanhaalt ("In PHP v4 kun je zelf XSLT uit breiden met functionaliteit uiit PHP of JavaScript.")wringen mensen zich toch weer in allerlei bochten om in XSLT toch maar weer de beschikking te krijgen over wat fatsoenlijke functionaliteit om business-logic in de XSLT-trap uit te kunnen voeren. Dat vind ik maar raar, ben je net goed bezig met het scheiden van zaken als inhoud, structuur en vast ook opmaak, gooi je je business logic in de verkeerde laag!
Samengevat: gebruik XSLT voor waar het goed in is en zie het niet als de ultieme oplossing voor al uw template-problemen.