Autor Zpráva
Petr Dlouhý
Profil *
Dobrý den,

chtěl bych se zeptat, jestli je možné udělat soubor, který by se tvářil zároveň jako php i xml (konkrétně svg). Jde o to, že by se měl soubor tvářit jako xml po interpretaci pomocí php, ale i před ní. V kódu není problém to udělat. Stačí použít následující trik:
<!--
<?php
print "-"."->\n";
require("mapobject.php");
print "<!-"."- ";
?>
-->
Potom je pro php je vše v pořádku (xml/html komentářů si nevšímá, takže vygeneruje prázdné komentáře), pro xml je také vše v pořádku - je to komentář.
Problém nastává u hlavičky. Jestli to dobře chápu, tak v korektním xml musí být na začátku (od prvního bajtu) něco jako:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Kámen úrazu je v tom, že tuto hlavičku považuje php za svůj vlastní kód, a tedy skončí chybou.

Dá se to nějak vyřešit, abych mohl soubor zároveň upravovat v Inkscape a zároveň nechat modifikovat pomocí php?
bukaj
Profil
Petr Dlouhý
Jednoduše:
<?php echo "<?xml";?> version="1.0" encoding="UTF-8" standalone="no"?>
Str4wberry
Profil
Odpovídám Petru Dlouhému:
Viz FAQ k PHP.
Chamurappi
Profil
Reaguji na Petra Dlouhého:
V kódu není problém to udělat. Stačí použít následující trik
Není potřeba. Zápis <?php něco ?> je správně sestavený kousek XML.
Chamurappi
Profil
A ještě jednou reaguji na Petra Dlouhého:
Jestli to dobře chápu, tak v korektním xml musí být na začátku (od prvního bajtu) něco jako
Nemusí. Pokud užíváš XML 1.0 a kódování máš UTF-8 (nebo ho deklaruješ v HTTP hlavičce Content-Type), můžeš XML deklaraci v klidu vynechat.
Petr Dlouhý
Profil *
Chamurappi:
Máte pravdu, ten komentář není nutný. Budu ho tam ale stejně muset nechat, protože Inkscape jinak ten php kód po uložení sežere (to je ale asi chyba Inkacape).

Chamurappi:
XML 1.0 používám stejně jako UTF-8 - je to napsané v té hlavičce, kterou jsem napsal. HTTP hlavičku Content-Type posílám, když to generuji z php; netuším, ale jak jí mám posílat když to otevírám v Inkscape. Nevím, jestli je to způsobené Inkscape, ale jakmile to začíná něčím jiným než "<?xml" (a stačí i prázdný řádek nebo mezera), tak to inkscape neotevře (může to ale být problém Inkscape, nevím).

bukaj, Str4wberry:
To faq jsem samozřejmě četl, a vygenerovat xml hlavičku z php jsem zkoušel mnoha různými způsoby, ale stejně to nepomůže abych to mohl otevřít v Inkscape bez editace.
Petr Dlouhý
Profil *
Chamurappi:
Poprvé jsem vás ne úplně pochopil. Máte pravdu - když to <?xml... vynechám úplně, všechno funguje jak má (pokud tam ale je, tak musí být hned od začátku). Díky moc.
Kajman_
Profil *
Možná by též pomohlo nastavit v php disable-short-tags.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: