Při vkládání php skriptů do xhtml stránek jsem narazil na jeden problém, s kterým si neumím poradit. Každý XHTML dokument totiž začíná řádkem pro xml preprocesor který vypadá nějak takto: <?xml version="1.0" encoding="UTF-8"?> za nímž následuje DOCTYPE deklarace atd.
V případě XML dokumentů by mělo být kvůji jednoznačné identifikaci použito uvození instrukcí pro PHP preprocesor podobným způsobem, tedy: <?php echo "pokus"; ?>. Identifikátorem, podle kterého by měl interpreter PHP běžící na vašem serveru poznat, zda je určitá instrukce určena právě pro něho by mělo být právě ono "<?php" a ukončující ">". Bohužel při vyhodnocení následující stránky:
----
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test Page</title>
</head>
<body>
<?php echo "Tak tohle by měl zpracovat interpreter PHP"; ?>
</body>
----
dojde k chybě:
"Parse error: parse error in /3w/kvalitne.cz/n/nejakyweb/tframe.php on line 1"
Jedná se o chybové hlášení PHP interpreteru, který se pokouší přelouskat instrukci uvozenou v <?xml ... ?>, která pro něj není určena, nebo je chyba někde jinde?
Je to přesně tak, jak jsi napsal.
Vyřešit to můžeš třeba tak, že na první řádek napíšeš:
<? echo("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"); ?>
Další nemilé překvapení Tě čeká, až si zobrazíš stránku, na které se generuje kód pro vkládání banneru.
(viz http://www.webzdarma.cz/forum/read.php?f=1&i=6219&t=6219)
Hodně zdaru.
jeste lepsi by bylo
echo '<' . '?xml version="1.0" ... ?' . '>';
kvuli nejakejm ignorantskejm parserum...
A proc uz ne rovnou ...
echo '<?xml version="1.0" ... ?>';
??? Radek
Takže, diky. Zda se že tohle je opravdu řešení. I když mám pocit že by to spíš chtělo řešit na úrovni interpreteru PHP, než takovým "vnořováním". V teto situaci, kdy známe pořadí vyhodnocovani, tedy nejdříve PHP(na serveru), pak XML(klient) o nic nejde, ale příliš univerzalni mi takový system s přihlédnutím k budoucímu rozšíření nepřipadá. Přesto dík, prozatím to funguje, uvidíme jak se věci pohnou kupředu.
>> radim : s tím kódem reklamy je to opravdu problém, ale řešení je přece tak jednoduché. A pokud by XHTML kód někomu nevyhovoval, přoč nevytvořit několik volitelných sekvencí v komentářích, které budou nahrazovány různými verzemi tohoto kódu, např. <!--WZ-REKLAMA-W3XHTML-->, <!--WZ-REKLAMA-W3HTML32-->,... no a v neposlední řadě speciální úpravu pro uživatele FrontPage, či dokonce Wordu <!--WZ-REKLAMA-ALLINVALID--> ;-). Vyjádřil se admin k tomto problému?
obavam se, ze kdyby se zakazalo interpretovani zkraceneho zacatku php bloku (mam na mysli to <?) misto spravnejsiho <?php, prestala by fungovat vetsina php skriptu :)
ty delas php stranky v nejakem xml editoru nebo proc je tohle vlastne pro tebe problem ?
Chápu. Snažit se přesvědčit masy o korektnosti nějakého kroku, který jim přidá práci, a argumentovat při tom jen tím, že je to logicky správné a že je to korektnější vůdči jakési obecnější specifikaci, je na dnešním internetu nejen obtížné ale asi skoro nemožné. Jak jsem už řekl: uvidíme jak se masy pohnou. Víc se s tím asi dělat nedá (zatím).
Co by ale šlo vyřešit rychle a elegantně jsou ty nové komentáře pro nahrazování kódů vkládáné reklamy validované dle XHTML. Co říkáš?
upravil jsem ten vkladany kod, melo by to byt ok - tj. jestli to neni, tak zkus znovu tu stranku ulozit, aby doslo k prepsani toho kodu ve strance, ja to sice daval, aby se to prepsalo vsude, ale kdyby neco, tak tohle by melo zabrat
testoval jsem to na http://mt.wz.cz/ tak snad to bude u tebe taky ok
Už jsem se tímto problémem zabýval také, ale jen teoreticky. XHTML 1.1 je modularní (může "includovat" jiné části dokumentu s jeným kódováním, jazykem, ...), myslím že by se skript té reklamy dal hodit do nějakého souboru, a ten potom vložit do XHTML dokumentu. Jesli to jde, prosím majlněte mi. Jestli ne, tak taky.