XML/XSL(T) vs template systemy – XML / XSL(T) – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

XML/XSL(T) vs template systemy – XML / XSL(T) – Fórum – Programujte.comXML/XSL(T) vs template systemy – XML / XSL(T) – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lubo0
Newbie
8. 8. 2008   #1
-
0
-

Pri programovaní v PHP som narazil na template systémy a po surfovaní na nete som našiel mnohé z nich väčšinou podobné ako Smarty... Avšak v rôznych fórach boli príspevky aj od odporcov týchto template systémov, jeden z argumentov proti mnohým týmto systémom bol názor, že načo treba ďalší špeciálny jazyk na templaty, keď samotné PHP je niečo podobné... Samotné diskusie a príspevky v nich boli niekoľko rokov staré, čo vyzerá ako by Smarty pomaly upadalo... Neviem ako je to s ostatnými.

Potom som po ďalšom surfovaní som narazil na XML/XSL(T), ktoré je definované samotným w3c a vyzerá to tak že XML/XSL(T) sa dá použiť ako template systém.

Zaujímalo by ma či je v dnešnej dobe efektívne využívať template systémy typu Smarty alebo radšej používať XML/XSL(T)? Alebo je to jedno? Tiež by som chcel vedieť v čom sú výhody použitia, či sa to používa a ak prečo sa používa práve tento spôsob...

Nahlásit jako SPAM
IP: 89.173.122.–
Reklama
Reklama
8. 8. 2008   #2
-
0
-

Nevim jake presne XML myslis ty, ja jsem neco takoveho zkousel uz pred nejakou dobou a problem byl, ze to bylo hrozne pomale - proste mi parsovani vetsich objemu dat XML phpku moc nechutna. Dalsi vec je, ze takova sablona potom musi byt 100% XML korektni, jinak parsovani selze. A navic ten defaultni parser neumel cestinu.

Nahlásit jako SPAM
IP: 213.220.192.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
lubo0
Newbie
8. 8. 2008   #3
-
0
-

Mám na mysli toto:
1. nech PHP scripty generujú svoj výstup v XML formáte
2. nech mám xsl súbor (šablonu)
3. nejaký PHP script alebo prehliadač (tým prehliadačom si úplne nie som istý) spojí xml+xsl a vytvorí html súbor, ktorý zobrazí prehliadač

Čiže xls súbory by reprezentovali šablonu...

Je to rovnako dobré ako napríklad Smarty? dá sa to použiť, resp. skúšal to niekto?

Nahlásit jako SPAM
IP: 89.173.122.–
lubo0
Newbie
8. 8. 2008   #4
-
0
-

Ešte, keď už som začal... Prečo vlastne existujú PHP template systémy? Predpokladajme, že mám vytvorený script s PHP logikou, premenné v tomto scripte uložím ako globálne alebo ich proste nejako vytiahnem z funkcií a na konci tohoto súboru zavolám: include("šablóna.php");

V súbore šablóna budem mať html kód ktorý sa bude zobrazovať a premenné budem vypisovať: <tag><?php echo $premenna ?></tag>

Nepoužil som teda žiadny template systém a zdá sa mi, že to má rovnaký efekt... Keď sa to dá spraviť takto, prečo niekto programuje template systémy? Nie je to zbytočné komplikovanie?

Nahlásit jako SPAM
IP: 89.173.122.–
dalaman0
Věrný člen
9. 8. 2008   #5
-
0
-

K hlavnej otazke topicu sa nevyjadrim, iba toto chcem:

Keď sa to dá spraviť takto, prečo niekto programuje template systémy? Nie je to zbytočné komplikovanie?


Neviem ako by si tymto stylom vyriesil zobrazovanie informacii z cyklov.. Co je dost casto pouzivana vec.
Napr. by si tahal z databazy zoznam pdnikov a informacii o nich a vypisoval do prehladnej tabulky (ktoru pouzivaju aj ine skripty)

To by si si musel pre kazdy riadok vytvarat zvlast premenne alebo vytvarat pole... lenze to by si zas potom nevedel urcit kolko treba riadkov tabulky v sablone a pod.
Dalej mozem spomenut spajanie premennych do skupin ktore sa posielaju do templatu, spajanie viacerych templatov na stranke, a hlavne jednoduchost , prehladnost celeho projektu, oddelenie PHP od HTML - cize to preco sa pouzivaju templates, a mnoho dalsich sofistikovanejsich moznosti.

Ale pravda je ze to naozaj spomaluje generovanie stranky na serveri.

Nahlásit jako SPAM
IP: 78.98.53.–
Lepšie je mať psa na saláme ako salámu pod psom !!!
bukaj0
Věrný člen
9. 8. 2008   #6
-
0
-

lubo
Zaujímalo by ma či je v dnešnej dobe efektívne využívať template systémy typu Smarty alebo radšej používať XML/XSL(T)?
Podle mě se vyplatí XML/XSL(T) používat u „méně dynamických“ jazyků než je PHP – tedy např. v Javě apod.

A Smarty se mi zdá zbytečné používat, protože se stejně šablony „kompilují“ do embed PHP příkazů, takže je podle mě je lepší využívat rovnou jich. Použítí Smarty má samozřejmě i výhody. Hlavně je, co se vypisování proměnných týče, méně „ukecané“ než rovnou psát embed PHP příkazy ({$promenna} vs. <?php echo $promenna; ?>, nebo např. {$promenna | upper} vs. <?php echo strtoupper($promenna); ?>).

Osobně jsem Smarty nikdy na něco většího nepoužil. Zkusil jsem, ale děkuji, nechci.

Prečo vlastne existujú PHP template systémy?
Podle mě to bylo velým hypem okolo oddělování aplikační a prezenční logiky. Tak si někteří usmyslili, že nejlepší bude ještě nad PHP naroubovat nějaký pseudojazyk, který se o to bude starat. Dnes se od toho snad upouští, protože mnoho lidí zjistilo, že je to prakticky k ničemu.

V súbore šablóna budem mať html kód ktorý sa bude zobrazovať a premenné budem vypisovať: <tag><?php echo $premenna ?></tag>
Když už, tak bych se vyhnul globálním proměnným. Mnohem elegantnější se mi zdá kupř.:

function render_template($file, $context)

{
extract($context);
include $file;
}

dalaman
oddelenie PHP od HTML
Tohle bych řekl, že je další problém v uvažování některých lidí. Když se poví „oddělení aplikační a prezenční logiky“, hned si pod tím představí, že PHP a HTML musí jít dáleko daleko od sebe. Ale to není pravda. Hlavní je oddělit jádro aplikace („kóntroléry“ a „módely“) od výstupu do HTML. Ale jazykem, kteří může výstup do HTML řídit, který může HTML skládat, stále může být PHP.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
lubo0
Newbie
9. 8. 2008   #7
-
0
-

bukaj

Ak by som teda oddelil php súbory s logikou a vzhľadom aplikácie a použil napr. tebou načrtnutú funkciu alebo nejaký iný spôsob ako dopraviť premenné, vlastne informácie do stránky, takže nepoužijem template systém, bude stránka rýchlejšia ako s použitím template? (keď si to tak spätne čítam pripadá mi to, že vlastne chcem niečo ako template ale ručne napísané v php)

Inak zdá sa mi, že niekedy snahy ľudí písať najkratšie zdrojové kódy sú až príliš prehnané :-) Povedzme, že Smarty forma je menej ukecanejšia, áno {$premenna} je skutočne kratšie ako <?php echo $premenná ?> ale je to potrebné až tak skracovať? Keď som písal v JavaScripte nejaké veci, tak som skutočne niekedy nadával, že príkaz document.getElementById(); by mohol byť kratší, ale v konečnom dôsledku som ladením chýb a najmä ich hľadaním strávil viac času ako písaním scriptu (niekedy to hľadanie je veľmi ťažké)... Myslím, že s PHP je to podobné, nemalo by podľa mňa až tak záležať na tom, či je to dlhšie alebo kratšie, ale skôr čitateľnosť, teda keď sa na to pozriem, aby som vedel čo to robí, a to záleží aj na programátorovi (pomenovanie premenných, odsadzovanie...), čiže zmena syntaxe nemusí znamenať zlepšenie čitateľnosti a nemala by podľa mňa byť až taká dôležitá pri rozhodovaní či použiť template alebo nie

A ešte jedna vec. Ako oddeľujete vzhľad a logiku stránky od seba? Ak by sa dalo mohli by ste napísať aj krátke príklady, dosť ma táto téma zaujala (veď kto by nechcel písať elegantný kód?) Ale to je asi nad rámec tohoto threadu :-)

Nahlásit jako SPAM
IP: 89.173.122.–
bukaj0
Věrný člen
9. 8. 2008   #8
-
0
-

lubo
takže nepoužijem template systém, bude stránka rýchlejšia ako s použitím template?
To si bude chtít najít nějaké benchmarky na internetu. Ale podlě mě, čistě logicky, by to bez Smarty rychlejší být mělo. I když odhlédneme od toho, že se šablony stejně cachují „zkompilované“ do PHP, pořád by se muselo znovu a znovu načítat Smarty – zátěž navíc.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
9. 8. 2008   #9
-
0
-

lubo document.getElementById();


Pouzij prototype nebo jQuery, oboje to zkracuji na $ (plus u jQuery jeste musis pridatdo hornoty krizek).

lubo A ešte jedna vec. Ako oddeľujete vzhľad a logiku stránky od seba? Ak by sa dalo mohli by ste napísať aj krátke príklady, dosť ma táto téma zaujala (veď kto by nechcel písať elegantný kód?) Ale to je asi nad rámec tohoto threadu :-)


Ukazu to reba na priklade tabulky. Klasicky pristup je takhle:
echo "<table>";

while($result=mysql_fetch_object($response)){
?>
<tr><td><?=$result->poleA?></td><td><?=$result->poleB?></td><td><?=$result->poleC?></td><td><?=$result->poleD?></td> </tr>
<?
}
echo "</table>";
Sablonovy pristup je pak takto:
$table=new Table("nazevsablony");

while($result=mysql_fetch_object($response)){
$table->addRow($result->poleA,$result->poleB,$result->poleC,$result->poleD);
}

A takhle jde delat s kvalitnim sablonovym systemem skoro vse. A to je prave to oddeleni logiky od prezentace. Samozrejme ze to bude na vykon o neco slabsi nez kdyz bys to delal rovnou, ano je to dalsi kod navic. Nezpoem ale na to, ze cas programatora je vetsinou podstatne drazsi nez cas stroje ;)

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
9. 8. 2008   #10
-
0
-

Neco jsem na harddisku vyhrabal - to je to, co jsem si ja predstavoval pod XML sablonovym systemem. Do HTML sablony se melo pridat nekolik dalsich tagu, ktere mely urcovat podobu vysledne stranky. Tagy zahrnovaly hlavne datove vstupy a definice cyklu a podminek.

Tady je zakladni sablona (zatim velice jednoducha, v budoucnu by tady byl nadefinovany layout):

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><mzdata id="title" /></title>
</head>
<body>
<h1>My uber websiteěščřžýáíé</h1>
<hr />
<mzinclude id="page" />
</body>
</html>
Obsah page se mel sestavovat z mensich kousku. Zde je napriklad jednoduchy objekt Article.
<mzobject name="article">

<h2><mzdata id="name" /></h2>
<small>By: <mzdata id="author_name" /></small>
<p class="subtitle"><mzdata id="subtitle" /></p>
<p><mzdata id="content" /></p>
</mzobject>
A tady to zacina byt zajimavejsi - vstupuji zde do hry cykly a podminky.
<mzobject name="form">

<form action="" method="" class="formatted_form" mzvar="form:action,method,class">
<mzloop id="fieldsets">
<mzcondition id="fieldset_cond" parent="fieldsets" />
<mzbranch condition="fieldset_cond" value="fieldset" parent="fieldsets">
<fieldset name="" title="" mzvar="fieldset:name,title">
<legend><mzdata id="fieldset_legend" parent="fieldsets"></legend>
<mzloop id="fields" parent="fieldsets">
<label for="" mzvar="label:for">
<mzdata id="field_label" parent="fields">
<mzcondition id="asterisk_cond">
<mzbranch condition="asterisk_cond" value="1">
<strong class="asterisk">*</strong>
</mzbranch>
</mzcondition>
</label>
<mzcondition id="field_cond">
<mzbranch condition="field_cond" value="input">
<input type="text" name="" maxlength="40" accesskey="" value="" mzid="input" mzvar="type,name,accesskey,value" /> <?=red(@$error["jmeno"]) ?>
</mzbranch>
<mzbranch condition="field_cond" value="select">
<mzobjectinclude>
</mzbranch>
</mzcondition>
</mzloop>
</fieldset>
</mzbranch>
</mzcondition>
</mzloop>
<input type="submit" name="odeslat" class="odsadit" accesskey="S" value="Zaregistrovat se a odeslat objednávku!" title="Klepnutím na toto tlačítko vložíte své údaje do databáze a Vaše objednávka bude ihned odeslána ke zpracování" />
</form>
</mzobject>

To co jsem se postnul myslim vicemene funguvalo. I pri naprosto zakladnich ulohach jsem se ale dostaval k zpracovavacim casum, ktere proste nebyly unosne. Slepa ulicka evoluce.

Dalsi nevyhodou, kterou jsem uz zminoval, byla nepodpora cestiny. Nevim co by to udelalo v UTF, win1250 to ale nedavalo.

Ted si jeste vspominam na jednu nevyhodu - nesly vkladat dynamicke hodnoty do parametru, aniz by se narusila validita XML.

Myslim, ze to je presne to co bukaj myslel "jazykem nad PHP" :)

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
lubo0
Newbie
9. 8. 2008   #11
-
0
-

CommanderZ

Sablonovy pristup je pak takto:

table=new Table("nazevsablony");

while($result=mysql_fetch_object($response)){
$table->addRow($result->poleA,$result->poleB,$result->poleC,$result->poleD);
}



Zaujímavé, celkom sa mi to páči :-) Je to z nejakého konkrétneho template systému alebo ukážka? Mohol by si napísať jeho meno? (dosť rád by som sa s takým niečím pobavkal)

Nahlásit jako SPAM
IP: 89.173.122.–
9. 8. 2008   #12
-
0
-

Ten priklad jsem spatlal na kolene. Neco velmi podobneho pouzivame v praci, to je ale interni. Neco podobneho ti ale nabidne Zend Framework nebo myslim ze i Nette (ta to ma rozhodne pro formulare, pro tabulky nevim).

Ale co si budeme povidat - takovou tridu se zakladni funcionalitou by nemel byt problem spatlat behem dvou hodin ;)

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

XML + XSL a čeština — založil mbe

NetBeans a xsl — založil vlado0991

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý