ticktrickundtrack: XHTML sinnvoll?

Hallo Leutz.

Ist es eigentlich sinnvoll schon XHTML zu verwenden ?

Falls ja, funzt es auch mit PHP ? Ich habe nämlich in der Selfhtml Dokumentation dazu gelesen, dass XHTML Dateien auch dementsprechend die Endung *.xml oder *.xhtml haben müssen, was mit einer PHP Ausgabe ja nicht möglich wäre.

Danke für eure Hilfe und schönen Tag noch :)

  1. Moin!

    Ist es eigentlich sinnvoll schon XHTML zu verwenden ?

    Falls ja, funzt es auch mit PHP ? Ich habe nämlich in der Selfhtml Dokumentation dazu gelesen, dass XHTML Dateien auch dementsprechend die Endung *.xml oder *.xhtml haben müssen, was mit einer PHP Ausgabe ja nicht möglich wäre.

    Wenn du unter </selfhtml/html/xhtml/unterschiede.htm> genau nachgelesen hättest, wären dir zwei Punkte aufgefallen:

    1. XHTML-Dateien dürfen sehr wohl ".html" heißen. Die Unterschiede liegen dann in der Behandlung durch den Browser.

    2. Der Mime-Typ ist entscheidend für die Behandlung der Daten durch den Browser. Üblicherweise [1] ist dem Browser völlig egal, welche Dateiendung die Ressource auf dem Server hat, solange nur der richtige Mime-Typ übermittelt wird. Auf diese weise kann man z.B. per PHP Bilder direkt an den Browser senden: <img src="bildmacher.php"> funktioniert und zeigt ein Bild an, wenn im PHP-Skript mit header("Content-type: image/jpeg"); oder einem anderen passenden Typ der Browser von der "Bildhaftigkeit" der Daten überzeugt wird. ;)

    Auf die gleiche Weise kannst du also XHTML-Daten mit dem richtigen Mime-Typ an den Browser senden. Das ist genau eine Zeile Mehraufwand pro PHP-Datei.

    - Sven Rautenberg

    [1] Ausnahme bildet mal wieder der IE, welcher ein paar Mime-Typen auf Korrektheit prüft und sein Verhalten danach richtet.

    1. Heisst das ich muss nur die DTD ändern oder brauche ich auch dieses <?xml  version=...?> ???

      Ich habe das nämlich im IE getestet und der gibt einfach den Quellcode aus.
      Ausserdem steht da noch, dass man für eine korrekte Ausgabe alle Angaben mit CSS definieren muss, stimmt das ?

      Oder reicht es jetzt einfach einmal die DTD zu ändern und die Tags anzupassen ?

      1. Heisst das ich muss nur die DTD ändern oder brauche ich auch dieses <?xml  version=...?> ???

        Im Prinzip heißt es das wohl.

        Ich habe das nämlich im IE getestet und der gibt einfach den Quellcode aus.
        Ausserdem steht da noch, dass man für eine korrekte Ausgabe alle Angaben mit CSS definieren muss, stimmt das ?

        Mehr Daten zu diesem Problem wären hilfreich. Wenn der IE den Quelltext anzeigt, hat ihn irgendwas dazu veranlaßt. Beispielsweise der falsche Mime-Typ, oder falsche Daten. Der Validator hilft: http://validator.w3.org - wenn da Fehler kommen, sind sie böse. Wer XHTML schreibt, sollte valides XHTML schreiben, deshalb macht er das ganze Theater doch.

        Deine Meldung sieht so aus, als ob du XML geschickt hast, mit XML-Mimetyp.

        Oder reicht es jetzt einfach einmal die DTD zu ändern und die Tags anzupassen ?

        Beides ist zumindest unabdingbar. Und AFAIK ist das für XHTML auch ausreichend.

        - Sven Rautenberg

        1. Ok ich denke das kapier ich ;)

          Folgendes Beispiel aus Selfhtml habe ich getestet: </selfhtml/html/xhtml/unterschiede.htm#beispiel>

          Ich bekomme im IE überall ausser beim HTML Beispiel den Quellcode farbig angezeigt. Also funkionierts wohl doch nicht ganz so einfach, oder?

          1. Ok ich denke das kapier ich ;)

            Folgendes Beispiel aus Selfhtml habe ich getestet: </selfhtml/html/xhtml/unterschiede.htm#beispiel>

            Ich bekomme im IE überall ausser beim HTML Beispiel den Quellcode farbig angezeigt. Also funkionierts wohl doch nicht ganz so einfach, oder?

            Das ist, was ich schon erwähnte: IE zeigt XML nur dann formatiert an, wenn er ein Stylesheet hat.

            Opera zeigt immerhin .html und .xml an, bei .xhtml versagt es auch (bzw. zeigt den Quelltext).

            Aber woran liegts? Daß Opera beim .xhtml "versagt", liegt in Wirklichkeit am ausgelieferten Content-Type: text/plain ist das nämlich, und Opera zeigt brav den Quelltext an, genau wie der Content-Type das verlangt. Daß der Internet Explorer sich da genauso verhält, ist aber leider Zufall: Der untersucht bei diesem Content-Type nämlich die Daten, die er erhalten hat, und würde HTML-Dateien mit diesem Content-Type als formatierte Seite darstellen, nicht als Quelltext. (Auf diese Weise schaffen es immer wieder Leute, ihre HTML-Seiten als ".txt" auf den Server zu stellen und wundern sich, daß ihre Seiten von Leuten mit funktionierenden Browsern nicht abgerufen werden können - der IE ist in diesem Zusammenhang kein "funktionierender Browser".

            Tja, IE schaut also den Dateiinhalt an - und kommt wohl zur Überzeugung, daß es XML ist. Die Darstellung von XML ist dir vom dritten Beispiel her bekannt. Und auch, daß man da ein CSS braucht.

            Ich würde also sagen: Die Sache ist doch einfach. XHTML kriegt einfach ".html" als Endung und dadurch automatisch (jedenfalls bei den bekannten Webservern) den Content-Type text/html - und alle Browser verstehen das, auch Netscape 4 (weswegen man ja das Leerzeichen vor dem Abschluß-Schrägstrich macht: <br />).

            Und dann kann man prima einfach auch mit PHP XHTML-Code ausgeben, denn PHP liefert ebenfalls als Standard den Content-Type text/html.

            - Sven Rautenberg

            1. Ok ich denke das kapier ich ;)

              Folgendes Beispiel aus Selfhtml habe ich getestet: </selfhtml/html/xhtml/unterschiede.htm#beispiel>

              Ich bekomme im IE überall ausser beim HTML Beispiel den Quellcode farbig angezeigt. Also funkionierts wohl doch nicht ganz so einfach, oder?

              Das ist, was ich schon erwähnte: IE zeigt XML nur dann formatiert an, wenn er ein Stylesheet hat.

              Opera zeigt immerhin .html und .xml an, bei .xhtml versagt es auch (bzw. zeigt den Quelltext).

              Aber woran liegts? Daß Opera beim .xhtml "versagt", liegt in Wirklichkeit am ausgelieferten Content-Type: text/plain ist das nämlich, und Opera zeigt brav den Quelltext an, genau wie der Content-Type das verlangt. Daß der Internet Explorer sich da genauso verhält, ist aber leider Zufall: Der untersucht bei diesem Content-Type nämlich die Daten, die er erhalten hat, und würde HTML-Dateien mit diesem Content-Type als formatierte Seite darstellen, nicht als Quelltext.

              Viele Antworten gehen hier immer vom Ausliefern eines Webservers aus. Stellt sich nur die Frage, ob man den Content-Type auch lokal beeinflussen kann. Denn ein Datei die auf der Platte oder einer CD liegt wird ja direkt geladen. Ich müsste mal schauen wie sich das xhtml Beispiel aus der SelfHTML anschaut wenn ich es online lade, lokal jedenfalls geht das in die Hose. Auch bei meinen anderen Seiten, die ich in meinen Threads erwähnt habe, troz CSS und Validierung. Für lokale Seiten hilft also wohl nur die Endung .html

              Gruss, Lars

      2. Heisst das ich muss nur die DTD ändern oder brauche ich auch dieses <?xml  version=...?> ???

        brauchst du.

        Oder reicht es jetzt einfach einmal die DTD zu ändern und die Tags anzupassen ?

        reicht nicht.
        du muss folgendes tun (achtung, lange Liste *g :)
        1. alle Tags und Attribute klein (vom DOCTYPE abgesehen)
        2. alle (wirklich ALLE!!!!!) nicht mehr erlaubten Tags raus (und wenn nötig/möglich) durch CSS ersetzen.
        3. DOCTYPE anpassen und das <?xml...> oben drüber
        4. alle Tags, die kein schließendes haben (br, img..) auf <br /> o.ä. umschreiben - geht das inzwischen auch ohne das Leerzeichen..?
        5. css und script Angaben mit <![CDATA[ Abgabe ]]> "beglücken" (achtung, hier steigen gerne einige Browser aus. Wenn, Daten auslagern..
        6. das Ganze durch den Validator jagen und wirklich alle Fehler beseitigen.
        7. wenn nicht das allerkleinste Problem mehr übrig ist - und wirklich nur dann (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) Datei in .xml umbenennen.
        ..in der URL ist die XHTML-Guideline von W3C

        1. Heisst das ich muss nur die DTD ändern oder brauche ich auch dieses <?xml  version=...?> ???
          brauchst du.

          <?xml  version=...?> ist nicht zwingend erforderlich: http://www.w3.org/TR/REC-xml#sec-prolog-dtd