[php] data en vormgeving gescheiden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit te denken om voortaan php xml code te laten genereren en deze xml op te maken met xslt.

Is dit nu wel zo'n goed idee en maak je dan echt je gehele site in xml en xslt?
(dus ook invoerschermen etc.?)

En weet iemand goede (basis) tutorials hiervoor?
Wat heb je er allemaal voor nodig etc.
Ik lees hier en daar dat je xpat voor nodig hebt. Of kan het ook anders. (XML + XSLT door de browser van de gebruiker laten parsen, bij webapplicaties voor een klant maakt het niet uit, want die gebruiken toch de browser die je voorschrijft, bovendien lijkt het me performance te schelen als je clientside parsed).

Wie heeft er ervaring mee etc.

Ja een hoop vragen en ik heb ook wel dit forum afgezocht en gelezen maar ik zou graag alles nog eens op een rijtje willen hebben.

Dus ik wil zeg maar: MySql + PHP --> XML genereren --> XSLT opmaak en dan XHTML output genereren.


Of kan ik toch makkelijker gebruik maken van templates (als smarty, fasttemplates, phplib etc.
Ik wil het namelijk gaan gebruiken voor webapplicaties. Die we aan meerdere klanten verkopen en die dus onderhoudbaar en schaalbaar moeten zijn.
Ik werk veel al met classes.

[ Voor 32% gewijzigd door Verwijderd op 07-06-2004 00:23 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:14
Ik heb ooit eens geprobeerd om met Apache Tomcat wat documenten in DocBook formaat te publiceren door er op de server een XSLT transformatie op uit te voeren. Dat duurde ruim dertig seconden per request (met een Pentium 3 550 MHz als webserver) en dat was pas wanneer de stylesheets door Tomcat gecached waren. Apache met mod_xslt deed het een factor twee of drie sneller, maar dat vond ik nog steeds onacceptabel. Naar mijn mening is on-demand XSLT dus niet praktisch bruikbaar.

Wat je natuurlijk wel kan doen is je documenten onderhouden in XML formaat en bij updates (dus niet on demand) de XSLT stylesheets er overheen gooien. Dat is natuurlijk niet te combineren met PHP. Als je toch XSLT wilt gebruiken, ga dan ofwel voor client-side XSLT (de meeste gangbare browsers ondersteunen dat wel aardig, maar niet alle) of zorg dat je je XSLT stylesheets simpel houdt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar gebruik je nu eigenlijk XML + XSLT alleen voor het weergeven van overzicht of ook voor invoerschermen met formfields en pulldowns enzo? (beetje newbie vraag misschien, maar ik vraag het me gewoon af).

Acties:
  • 0 Henk 'm!

Verwijderd

In tegenstelling tot bijv. Java kent PHP 4.x.x geen MVC (Model View Controller).

Het is een redelijk lastige zaak om deze twee onderdelen "perfect" van elkaar te scheiden. De mod_xlst (die bij de vorige poster als traag bestempeld werd) is bij mij toch wel redelijk goed gebleken. Deze server was een PII 350 met 256 meg. (apache 1.37, debian distro).

Ik kan vertellen dat het outputten van XML en dan client site xls te gebruiken niet de voorkeur prefereerd. Uit mijn ervaring blijkt dat erg veel gebruikers nog steeds browsers gebruiken die het niet of nauwelijks ondersteunen (bijv de vroegere versies van MS IE). Daarin tegen bied het outputten van XML wel programmeer handigheden met zich mee. Met xml en xsl te is het redelijk mogelijk om MVC te benaderen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In mijn geval ontwikkel ik webapplicaties voor klanten.
De klanten gebruiken Internet Explorer en wel de laatste versie.
Indien ze dit niet gebruiken laten wij ze de browser versie updaten.
Zodat we altijd maar voor 1 platform hoeven te ontwikkelen (das gewoon 1 van de restricties die wij stellen, anders blijf je bezig). Dus er kan dan gebruik gemaakt worden van de clientside MSXML parser.

Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Waarom zou je niet gewoon XHTML / CSS gebruiken?

Wij (bedrijfje) schrijven (ook statische) sites meestal zo dat je een pagina hebt die de setup doet. Die kijkt welke pagina geladen moet worden, voert queries uit etc.
Dan include (of require 8) ) je een script waarin het layout framework staat. En in die pagina maak en include je mbv de variabelen uit de setup fase de delen van de pagina.

Uiteraard kan dat ook met XML / XSLT...

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • Darius
  • Registratie: Juli 2001
  • Laatst online: 11:21
Als je doel programmeerwerk & vormgeving gescheiden houden is kun je ook smarty http://smarty.php.net/ met xhtml/css gebruiken.

Daar kun je echt heel veel mee doen.

[ Voor 4% gewijzigd door Darius op 07-06-2004 01:18 . Reden: url foutje ]


Acties:
  • 0 Henk 'm!

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Soultaker schreef op 07 juni 2004 @ 00:24:
Ik heb ooit eens geprobeerd om met Apache Tomcat wat documenten in DocBook formaat te publiceren door er op de server een XSLT transformatie op uit te voeren. Dat duurde ruim dertig seconden per request (met een Pentium 3 550 MHz als webserver) en dat was pas wanneer de stylesheets door Tomcat gecached waren. Apache met mod_xslt deed het een factor twee of drie sneller, maar dat vond ik nog steeds onacceptabel. Naar mijn mening is on-demand XSLT dus niet praktisch bruikbaar.
Dan maakt de omgeving (waarschijnlijk) een groot verschil bij XSLT. Mijn ervaring is dat het bij iedere request een XSLT-transformatie toepassen maximaal 1,5 seconden duurt, gebruik makend van Lotus Notes/Java met een redelijk complexe stylesheet op een P4 2GHz processor. Nu is 2GHz flink sneller dan 550Mhz, maar dat rechtvaardigt geen verschil van 29 seconden.

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Ik heb een aantal PHP-projecten gebouwd die gebruik maken XML als output en vervolgens op de server side deze XML door XSLT heen halen, en in mijn ervaring werkt het fantastisch. Het werkt bij mij zeer snel (als in, milliseconden), en in PHP 5 (wanneer libxslt gebruikt wordt in plaats van Sablotron) zal het alleen nog maar sneller worden. Lees hier meer over mijn ervaringen.

Rustacean


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt tot nu toe, hier kan ik wel wat mee.
Helaas staat op de server van de provider php4 ...
Nog enige tips voor tutorials hierover.

Smarty moet je geloof ik op de server installeren, dat is helaas onmogelijk.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 07 juni 2004 @ 09:07:
Bedankt tot nu toe, hier kan ik wel wat mee.
Helaas staat op de server van de provider php4 ...
Nog enige tips voor tutorials hierover.

Smarty moet je geloof ik op de server installeren, dat is helaas onmogelijk.
Smarty werkt onder PHP. Het word geinclude in je PHP script.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

  • Data via XML ophalen <- PHP4 Genereren d.m.v. Bijv. MySQL
  • Opmaak via XSLT
  • Resultaat via browser zie Example & Source
T'is 1 van de ( "vooruitstrevende" ? ) manieren hoe je opmaak en data kan scheiden... Natuurlijk kan PHP4 het ook mooi ServerSided samen voegen.
Dit d.m.v. Include's,Functions & Classes...

Suc6 met het kiezen van jou juiste oplossing :)
edit:
XML & XSLT vormen tegerlijkertijd een mooie oplossing voor PDA support ( Pocket PC 2003 )...
1 Engine maar 2 Design files (desktop & PDA d.m.v. $_SERVER['HTTP_USER_AGENT'] selectie )
RwDwR bied ook een mooie oplossing aan :9

[ Voor 24% gewijzigd door glashio op 07-06-2004 11:54 . Reden: PDA Support ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

Verwijderd

Wat je ook gaat doen, je moet ook eens kijken naar TinyButStrong deze prefereer ik boven Smarty omdat hij eenvoudiger in gebruik is en het design goed afschermd van code.

Je zou trouwens met een template engine makkelijk XML kunnen genereren. je zegt namelijk dat je een of/of doet, maar dat is niet per se nodig..

Acties:
  • 0 Henk 'm!

Verwijderd

Ik weet niet of ik de bedoeling goed door heb, maar ik doe het volgende:

Ik gebruik een klasse tabel met alle mogelijke tabellen in die ik wil gebruiken. Zet er gegevens in en klaar.

Zo hou je je data toch ook weg bij je opmaak.
Of zie ik iets over het hoofd

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik kan je toch wel echt aanraden geen template parser te gebruiken, maar exact de methode gebruiken die je zelf noemt. Mits goed aangepakt is dit ontzettend snel. Een stuk sneller dat met een PHP template parser iig. Ik gebruik de methode nu al een tijdje (ik ben op moment druk bezig met een grootschalig cms dat deze technieken gebruikt) en ik ben er meer dan erg tevreden mee. Als je via deze manier werkt kun je jezelf een hoop werk besparen omdat veel snel herbruikbaar is. De typen informatie op een website in namelijk vrijwel altijd het zelfde (voor een nieuwsbericht het onderwerp, datum en samenvatting en volle inhoud bijvoorbeeld) en je met XSL gemakkelijk bepalen wat je wel en wat je niet wilt gebruiken.

Wat wel een vereisten is, is dat op de webserver de DOMXML en XSLT extensies geinstalleerd zijn. (je kunt ook libxslt van DOMXML gebruiken, maar die kan (nog) geen XSLT 2.0 aan (wat je nodig hebt om XHTML te kunnen outputten). Ik zou er verder overigens niet op vertrouwen dat mensen een browser hebben die XML en XSL kunnen parsen. Gewoon HTML outputten is een stuk vertrouwder, dan weet je zeker dat het goed zit.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Mocht je wel een template systeem willen gebruiken misschien handig deze (op't moment ook actieve) thread te bekijken [rml][ php] vraagje voor gebruik templates[/rml]

Persoonlijk heb ik een voorkeur voor _wel_ templates omdat deze niet afhangen van de gebruikte software aan de client side.

Ik vind op de manier van XML & XSLT wel interessant maar bij een template systeem blijf je gewone HTML files houden met af en toe een variabele ertussen (zoals {var} of %var%, ligt aan welk systeem je gebruikt). In principe zou ik altijd kiezen voor templates alleen mij is vrij onbekend wat precies de nadelen qua snelheid zijn (dit verschilt ook per template systeem). Wat hij eigenlijk doet is je HTML files doorspitten op zoek naar variabelen (met preg / ereg functies) en dat zal nogal'n load veroorzaken (heb het nooit echt op getest eigenlijk). Als iemand daar wat meer over kan vertellen, ben zeer geïnteresseerd...

Vind XML & XSLT ook vrij veel moeite mijn inziens ten opzichte van templates...

Maar laat je niet teveel door mij leiden :+

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Ik heb zelf eerst een redelijke tijd met template systemen gewerkt en het werken met XML en XSLT is echt niet veel meer moeite. Een XSLT template is net als een andere template ook HTML met zo nu en dan een variable ertussen als je dat graag wilt. Je kunt het ook een stuk complexer maken, maar als je er nog weinig ervaring mee hebt is dat absoluut niet nodig. GsusZ: Al eens iets over simplified stylesheets gelezen? Dat is precies zoals ik net heb uitgelegd. Je hebt geen enkele toplevel tag nodig en kunt direct HTML typen en de xml invullen dmv. value-of en for-each statements.

En het is (als het eenmaal een beetje kent) echt niet veel meer moeite dan templates gebruiken. Ik ben het wel met je eens dat het even leren hoe het gedrag van XSL soms is, maar zoals ik net al zei kun je een hoop daarvan gewoon achterwege laten. De logica van een template kun je hier ook vrijwel direct op toepassen.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 09-09 17:11

Gertjan

mmmm, beer...

Verwijderd schreef op 07 juni 2004 @ 09:07:
Smarty moet je geloof ik op de server installeren, dat is helaas onmogelijk.
Smarty kun je gewoon in je homedir zetten bij je provider. Je include de benodigde bestanden en el werken. Je zou je hostingprovider kunnen vragen om het centraal te installeren, maar das pokkewerk (ervaring :)). Het moet ieg werken vanuit je homedir.
Pagina: 1