Karsten Schramm: PHP und XHTML

Hallo,

ich habe ein Problem damit, mit PHP ein gültiges XHTML 1.0 Dokument auszuliefern.

Am Anfang hatte ich das Problem, dass der Validator vom W3C das Dinge nur als text/html erkannt hat und auch so validiert hat (damit war es gültig).

Eine manuelle Einstellung über einen Meta Tag oder eine verzeichnislokale .htaccess Datei hat nicht geholfen (oder ich hab was falsch gemacht...).

Als ich dann den

AddType application/xhtml+xml .php

in die Apache httpd.conf geschrieben habe (was ich später bei meinem Provider schwerlich tun werden kann), wurde das Dokument nicht mehr angezeigt, weil der XML Parser sich an den <?php ... ?> einschüben stört.

Also die Frage:

Ich will mit PHP ein gültigex XHTML 1.0 Dokument erzeugen, was valide ist und vom Validator als application/xhtml+xml erkannt wird. Wie?

  1. Hi,

    Ich will mit PHP ein gültigex XHTML 1.0 Dokument erzeugen, was valide ist und vom Validator als application/xhtml+xml erkannt wird. Wie?

    der Validator muss es vor allem als XHTML 1.0 erkennen. Lieferst Du den entsprechenden DOCTYPE aus? Wie lautet die URL?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Hallo,

      der Validator muss es vor allem als XHTML 1.0 erkennen. Lieferst Du den entsprechenden DOCTYPE aus? Wie lautet die URL?

      ja, aber der Validator unterscheidet neben der DOCTYPE auch noch mal den content-type und da ist es bei XHTMl entscheidend, ob ein Document als text/html oder als application/xhtml+xml ausgeliefert wird, siehe auch http://forum.de.selfhtml.org/?t=85037&m=500008

      Cheatah

      Karsten

  2. Hallo,

    Moin!

    ich habe ein Problem damit, mit PHP ein gültiges XHTML 1.0 Dokument auszuliefern.

    Kenne ich.

    Am Anfang hatte ich das Problem, dass der Validator vom W3C das Dinge nur als text/html erkannt hat und auch so validiert hat (damit war es gültig).

    Du meinst, er hat es als HTML 4.0 statt als XHTML 1.0 validiert? Sollte er normalerweise nicht, sofern der DOCTYPE stimmt.

    Eine manuelle Einstellung über einen Meta Tag oder eine verzeichnislokale .htaccess Datei hat nicht geholfen (oder ich hab was falsch gemacht...).

    Wahrscheinlich, schauen wir mal. Meinst du den http-equiv meta Tag? Damit kann man den Webserver _bitten_ diese Angabe auszulesen und an den Client zu senden. In PHP erreichst du das aber _auf alle Fälle_, indem du den header('Content-Type: application/xhtml+xml'); sendest. Aber Vorsicht: Der IE weiß dann nicht mehr, dass das (X)HTML ist und will die Datei herunterladen statt anzeigen.

    Als ich dann den

    AddType application/xhtml+xml .php

    in die Apache httpd.conf geschrieben habe (was ich später bei meinem Provider schwerlich tun werden kann), wurde das Dokument nicht mehr angezeigt, weil der XML Parser sich an den <?php ... ?> einschüben stört.

    Welcher XML-Parser? Aber die Ausgabe des Default-Content-Types bei PHP kommt von dessen Interpreter, _nicht_ vom Apachen.

    Gruß, Robert

    1. Moin!

      Mahlzeit ;-)

      Du meinst, er hat es als HTML 4.0 statt als XHTML 1.0 validiert? Sollte er normalerweise nicht, sofern der DOCTYPE stimmt.

      Nay, nay, er hat schon XHTML 1.0 validiert, aber es macht einen Unterschied beim validieren, ob der content-type text/html oder application/xhtml+xml ist. Und sogar die clientseitige Browserinterpretation ist dann anders, völlig unabhängig von der DOCTYPE.

      Wahrscheinlich, schauen wir mal. Meinst du den http-equiv meta Tag? Damit kann man den Webserver _bitten_ diese Angabe auszulesen und an den Client zu senden.

      da bettelt man und bettelt man, aber der blöde Browser machts einfach net....

      »»In PHP erreichst du das aber _auf alle Fälle_, indem du den header('Content-Type: application/xhtml+xml'); sendest.

      jo so hab ichs dann auch gemacht

      »»Aber Vorsicht: Der IE weiß dann nicht mehr, dass das (X)HTML ist und will die Datei herunterladen statt anzeigen.

      jo, ich werd die Dateien bei mir lokal mit application/xhtml+xml entwickeln und validieren und wenn ich dann auf den Webserver ausliefere, werd ich wieder runterschrauben auf text/html.

      Welcher XML-Parser? Aber die Ausgabe des Default-Content-Types bei PHP kommt von dessen Interpreter, _nicht_ vom Apachen.

      früher hab ich so scherze gemacht wie

      <a href="<?php echo($link); ?>">Link</a>

      das geht so nicht mehr, damit kommt er aus welchen Gründen auch immer net zurecht, jetzt mach ichs so

      <?php echo("<a href="" . $link . "">Link</a>"); ?>

      und dann funzt es auch

      Thx trotzdem für deine Hilfe.

      Gruß, Robert

      Gruß, Karsten