Harald: XML-Deklaration und PHP

Hallo,

ich möchte meine Seite nun von HTML 4.0 auf XHTML umstellen, habe dabei aber folgendes Problem:

Ich setze auf meinen Seiten auch PHP ein, und so kommt es, da bei:

<?xml version="1.0" encoding="UTF-8"?>

gemeint wird, das abschließende ?> würde einen PHP-Block schließen, wo keine ist!

Wie kann ich das umgehen?

  1. Hi,

    ich möchte meine Seite nun von HTML 4.0 auf XHTML umstellen, habe dabei aber folgendes Problem:
    Ich setze auf meinen Seiten auch PHP ein, und so kommt es, da bei:
    <?xml version="1.0" encoding="UTF-8"?>
    gemeint wird, das abschließende ?> würde einen PHP-Block schließen, wo keine ist!

    Zwei Lösungen:
    1. gib die xml-Deklaration per PHP aus
    2. laß die xml-Deklaration weg (sie ist bei XML 1.0 nicht Pflicht, führt aber bei Anwesenheit z.B. im IE6 dazu, daß der Sloppy-Mode aktiviert wird).

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
  2. Hallo Harald,

    Ich setze auf meinen Seiten auch PHP ein,

    bei dem _zusätzlich_ short_open_tag aktiviert ist,

    und so kommt es, da bei:

    <?xml version="1.0" encoding="UTF-8"?>

    gemeint wird, das abschließende ?> würde einen PHP-Block schließen, wo keine ist!

    Nein, der Fehler rührt daher, dass <? für den Start eines PHP-Blocks gehalten wird.

    Wie kann ich das umgehen?

    <?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

    Andererseit solltest Du Dir überlegen, ob Du XHTML-Dokumente mit XML-Deklaration ausliefern _willst_. Denn die XML-Deklaration setzt den Internet Explorer in den quirks rendering mode, andere Browser bleiben dagegen im standards complaint rendering mode; das führt dann zwangsläufig zu Kompabilitätsproblemen. Ich empfehle daher, XHTML-Dokumente so aufzubauen:

    <!DOCTYPE .....>
    <html xmlns="...">
    ...

    und die XML-Deklaration komplett wegzulassen.

    Viele Grüße,
    Christian