11.5.09

bez odjeka


Prije 10ak godina CMS sustavi na webu su bili prava rijetkost i nisu bili baš dostupni širokim masama. Ako ste željeli svoju stranicu učiniti promjenjivom i zanimljivom morali ste joj dodati poneku skriptu kao što je knjiga gostiju ili brojač posjeta. Oni koji baš i nisu programeri bi na internetu našli odgovarajuću skriptu i dodali ju na svoju stranicu i eventualno prilagodili. Oni na koje ovaj blog cilja, programeri, bi u perlu ili php-u ili nekom drugom jeziku sami napisali skriptu koja npr iz datoteke ili baze čita broj posjeta uvećava ga za 1 i ispisuje na stranici. U PHP-u je za ispis naravno korištena naredba
echo. Vrijeme brojača posjeta i knjiga gostiju je odavno prošlo a zamijenili su ih blogovi, chatovi i slične stvari, a je li prošlo vrijeme za naredbu echo?

Ako ne pravite aplikaciju već svoju stranicu želite osvježiti nekom dodatkom dodavanje promjenjivog sadržaja naredbom echo je sasvim u redu. Ako radite neku kompliciraniju web aplikaciju ili imate puno koda prvo što ćete primijetiti kako se vrlo teško snalazite sa isprepletenim HTML-om i kodom. Rješenje je odvajanje PHP koda od HTML-a. Ovo je često lakše reći nego učiniti. Ideja je da se sve što je potrebno za prikaz stranice povuče iz baze i obradi pa se onda npr stranica sa HTML-om jednostavno includa. Naravno HTML stranica u tom slučaju sadrži i par naredbi echo. Ovo sam po sebi nije strašno ali se stvari počinju komplicirati kada neke dijelove stranice prikazujete uvjetno što zahtjeva
if naredbu u HTML dokumentu. If obično zahtjeva zatvorenu zagradu u nastavku stranice. Slično, ako planirate prikazati tablicu vjerovatno trebate for ili sličnu petlju. Opet dolazi do ispreplitanja HTML-a i PHP koda, ali u manjoj mjeri. Zaobilazno rješenje je da dijelove HTML koda "upucate" u varijablu pa je echo-ate u HTML. Ako sa dio stranice ne prikazuje onda je, naravno, varijabla prazna.
Ovo dovodi do još većih komplikacija. Sada je potrebno HTML tagove pisati u PHP kodu, pojavljuju se navodnici koje treba escape-ati ... Sve u svemu umjesto PHP-a u HTML-u dobivamo HTML u PHP-u. Jedini izlaz iz ovoga je templating engine kao što je Smarty. Ja sam se njime vrlo dugo koristio i meni se sviđa naročito što podržava plugine i filtere. Međutim kada sam otkrio XSLT zaboravio sam sve ostalo jer sam u njemu prepoznao ono što mi je oduvijek trebalo za pravi razvoj stranica.

Smisao XSLT je da jedan XML dokument pretvara (transformira) u drugi preko trećeg XML dokumenta. Vjerovatno se pitate što mi ovakva glupost pomaže pri izradi mojih stranica? Pa ovako, vaša HTML stranica je XML dokument koji je rezultat gornje transformacije. XML dokument koji transforimra je template koji vrlo nalikuje na HTML dokument kojem je dodano par xsl tagova koji određuje kako će se stranica prikazati i kakvi će podaci biti na njoj. Treći XML dokument, koji se transformira, su podaci. Znači umjesto generiranja nekakvih stringova koje kasnije sastavljate sa fiksnim HTML kodom, kod XSLT-a generirate XML dokument sa podacima, ovaj dokument "uparite" sa templateom i rezultat je HTML stranica.

Prednosti ima bezbroj, ne morate pisati HTML tagove ručno, u potpunosti je odvoje HTML od koda, izlazni dokument je otporniji na XSS napade jer XSLT procesor enkodira ulazne podatke... Dreamweaver kao i ostali HTML editori podržavaju uređivanje XSL dokumenata. Što je najljepše ako u dreamweaveru na XSL template "zakačimo" testni XML sa podacima možemo čvorove sa podacima direktno dodavati u termplate drag and dropom. Znači da web dizajneri mogu raditi svoj podao bez saplitanja o kod a programeri raditi svoj posao ne vodeći ni jedan posto računa o konačnom izgledu stranice. A za kraj Može se kompletno promijeniti izgled stranice ili umjesto HTML generairati PDF ili Excell ili neki drugi tip dokumenta bez ikakvih izmjena koda. Potrebno je naravno upotrijebiti drugi XSLT procesor.