Malin: Probleme beim Aufruf einer *.xhtml Datei

Hallo liebes Forum,

ich bin gerade dabei mein erstes Projekt in XHTML umzusetzen. Eigentlich habe ich alles richtig gemacht - dachte ich. Leider erscheint beim Aufruf im Browser immer der xml-Strukturbaum.

Was muss ich anders machen?

Hier ein paar Hinweise zur Programmierung:

  • Die dtd habe ich mir heruntergeladen und im Ordner lib abgespeichert
  • meine Formatierung liegt in der externen Datei master.css auf der gleichen Ebene wie die index.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE html (View Source for full doctype...)>

  • <html xmlns="http://www.w3.org/1999/xhtml">
  • <head>
      <title>www.kostenfaktor.de</title>
      <link rel="stylesheet" type="text/css" href="master.css" />
      <script type="text/javascript" src="kostenfaktor.js" xml:space="preserve" />
      </head>
  • <body>
  • <div id="head_navi">...

Bin für jeden Tipp dankbar!

Malin

  1. Hi Malin!

    Du mußt die Seite trotzdem als html-Datei speichern, um das gewünschte Ergebnis zu bekommen.

    Außerdem : Laß das "<?xml version="1.0" encoding="UTF-8" ?>" weg. Die xml Versionsangabe ist bei xhtml-Dokumenten nicht zwingend notwendig. Außerdem versetzt das den MSIE in den Quirks-Modus, weil der die Doctypeangabe in der ersten Zeile erwartet.

    Um Dir noch ein Beispiel zu geben. So z.B. ist es ein valides xhtml 1.1 Dokument ( als html gespeichert ) :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
        <head>
          <meta http-equiv="content-type" content="application/xhtml+xml; charset=ISO-8859-1" />
          <title>
            Meine erste xhtml 1.1 strict Seite
          </title>
        </head>
        <body>
          <h1>
            Das ist meine erste xhtml 1.1 strict Seite
          </h1>
        </body>
      </html>

    Liebe Grüße

    Rossi =)

    1. Hallo Rossi,

      ich hatte die Zeile
      <meta http-equiv="content-type" content="application/xhtml+xml; charset=ISO-8859-1" />
      vergessen, deshalb bekam ich immer die Baumstruktur zu sehen.

      Jetzt habe ich es nochmal ausprobiert, ohne die Datei in *.html umzuwandeln. Der Explorer zeigt es richtig an, der Mozilla zeigt mir den gesamten Quellcode an.

      Woran liegt denn das?

      Wäre super, wenn Du mir nochmal helfen könntest.

      Malin

    2. Hallo,

      Du mußt die Seite trotzdem als html-Datei speichern, um das gewünschte Ergebnis zu bekommen.

      Um Dir noch ein Beispiel zu geben. So z.B. ist es ein valides xhtml 1.1 Dokument ( als html gespeichert ) :

      Wieso XHTML 1.1? Es ist in keiner Spezifikation vorgesehen, XHTML 1.1 als HTML zu deklarieren, es ist zudem aus diversen Gründen nicht empfehlenswert.

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

      <meta http-equiv="content-type" content="application/xhtml+xml; charset=ISO-8859-1" />

      Das ist widersinnig, das Dokument wird als HTML und nicht als XHTML verarbeitet, dementsprechend wird der Inhaltstyp text/html sein.

      <title>
              Meine erste xhtml 1.1 strict Seite
            </title>

      Es gibt kein »XHTML 1.1 Strict«.

      Mathias

      1. Wieso XHTML 1.1? Es ist in keiner Spezifikation vorgesehen, XHTML 1.1 als HTML zu deklarieren, es ist zudem aus diversen Gründen nicht empfehlenswert.

        Kannst das näher erläutern? Wieso sollte man das nicht tun??? Klar geht das!

        <meta http-equiv="content-type" content="application/xhtml+xml; charset=ISO-8859-1" />

        Das ist widersinnig, das Dokument wird als HTML und nicht als XHTML verarbeitet, dementsprechend wird der Inhaltstyp text/html sein.

        Das bezweifle ich. Da war ich sogar kürzlich auf einer w3.org Seite, wo eine Tabelle war mit sämtlichen Möglichkeiten. Was sein soll/darf/muß und was man nicht verwenden soll. Aber... eh klar... wie immer....hab kein Bookmark gemacht und in dem w3.org-Chaos eine Seite wiederfinden.....

        Es gibt kein »XHTML 1.1 Strict«.

        Da hast Du natürlich Recht. Das hab ich damals am ersten Tag geschrieben, als ich anfing, mich damit zu beschäftigen und heute den Quelltext kopiert, ohne zu sehen, was da im Titel und der Überschrift steht. Es gibt natürlich nur EINE 1.1 Variante.

        1. Hallo,

          Wieso XHTML 1.1? Es ist in keiner Spezifikation vorgesehen, XHTML 1.1 als HTML zu deklarieren, es ist zudem aus diversen Gründen nicht empfehlenswert.

          Kannst das näher erläutern? Wieso sollte man das nicht tun???

          </archiv/2004/4/77771/#m449168>
          </archiv/2004/1/68031/#m389830>
          </archiv/2003/12/67742/#m387987>
          </archiv/2003/3/42018/#m230079>
          </archiv/2002/11/30976/#m173460>
          ... http://selfsuche.teamone.de/

          <meta http-equiv="content-type" content="application/xhtml+xml; charset=ISO-8859-1" />

          Das ist widersinnig, das Dokument wird als HTML und nicht als XHTML verarbeitet, dementsprechend wird der Inhaltstyp text/html sein.

          Das bezweifle ich.

          Was gibt es daran zu bezweifeln? Du hast doch selbst gesagt, dass das Dokument .html genannt werden soll. Damit liefert es der Webserver als HTML aus, damit verarbeitet es der Browser als HTML, nicht als XHTML. Der Inhaltstyp ist dann text/html. In ein solches Dokument einen Inhaltstyp hineinzuschreiben, der dem richtigen HTTP-Content-Type-Header widerspricht, ist notwendigerweise unlogisch und widersinnig.

          Da war ich sogar kürzlich auf einer w3.org Seite, wo eine Tabelle war mit sämtlichen Möglichkeiten. Was sein soll/darf/muß und was man nicht verwenden soll.

          http://www.w3.org/TR/xhtml-media-types? Das wird eher meine Aussage bestätigen.

          Mathias

          1. Hi!

            http://www.w3.org/TR/xhtml-media-types? Das wird eher meine Aussage bestätigen.

            Und was steht da? ==>

            XHTML Basic / 1.1 :

            text/html = SHOULD NOT !!!
            application/xhtml+xml = SHOULD !!!

            Rossi

            1. Hallo,

              http://www.w3.org/TR/xhtml-media-types? Das wird eher meine Aussage bestätigen.

              Und was steht da? ==>

              XHTML Basic / 1.1 :

              text/html = SHOULD NOT !!!
              application/xhtml+xml = SHOULD !!!

              Was willst du mir damit sagen? Ich glaube, da missverstehst du etwas, dies bedeutet nämlich nicht, dass ein als text/html ausgeliefertes XHTML 1.1-Dokument <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" /> enthalten muss/sollte.

              Dort steht, dass XHTML 1.1 als application/xhtml+xml, nicht als text/html deklariert bzw. ausgeliefert (»served as .. to user agents«) werden sollte. Genau das passiert aber, wenn der Dateiname auf .html endet. Das Deklarieren eines Dokuments mit einem Inhaltstyp passiert bei HTTP-Kommunikation im Kopf der Serverantwort, nicht im Inhalt selbst. Ich sagte bereits, dass die Dateiendung .html dazu führt, dass der Server den Inhalt als text/html deklariert (HTTP-Header »Content-Type: text/html«). Dieser vom Webserver angegebene MIME-Typ ist ausschlaggebend für die Verarbeitung im Browser. (Beim lokalen Öffnen der Datei sollte der Browser den MIME-Typ ebenfalls an der Dateiendung festmachen.) Daran kann kein meta-Tag etwas ändern. Im <meta http-equiv="Content-Type" content="..." /> kann etwas völlig anderslautendes, etwa text/plain, stehen und der Browser wird die Seite trotzdem als HTML-Dokument verarbeiten, wenn text/html im Content-Type-Header angegeben ist.

              Ich wiederhole mich, in einem XHTML 1.1-Dokument, was vom Server als text/html deklariert wurde, <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" /> zu notieren, ist doppelt widersinnig.

              Mathias

              1. Hi Mathias!

                Bin jetzt endgültig verwirrt. Als ich umgestiegen bin von html zu xhtml habe ich gelsen, was da so die Unterschiede sind und daß es eben die 1.0 und die 1.1 Version gibt - daß 1.1 die Zukunft ist, keine mißbilligten Attribute mehr enthält, hab viele Beispielseiten gesehen,etc.

                Was ich NICHT gelesen habe, war, daß man mit xhtml 1.1 keine Internetpräsenzen schreiben soll. WO bitte steht das? Ich habe die ganze letzte Nacht zu dem Thema Beiträge gesucht. Aber weder die w3.org Seite, noch das Forum helfen mir weiter. Im Forum ( so wie auch bei den von Dir angegebenen Links ) kommt man zu Forumsbeiträgen, die zu Forumbsbeoträgen verweisen, die zu Forumbsbeiträgen verweisen, die zu Forumbsbeiträgen verweisen, die zu Forumbsbeiträgen verweisen, . . . . .

                Wenn man xhrml 1.1 - so, wie Du sagst - für die Erstellung einer Homepage nicht verwenden soll/darf, wieso finden sich dann auf w3.org und im Netz so viele Beispielseiten dazu?

                Mir kommt vor, je länger ich mich jetzt mit der Thematik befasse, um so weniger kenne ich mich aus und um so verwirrter werde ich. Irgendwie frustrierend. =(

                Liebe Grüße

                Rossi

                1. Hallo zusammen.

                  Wenn man xhrml 1.1 - so, wie Du sagst - für die Erstellung einer Homepage nicht verwenden soll/darf, wieso finden sich dann auf w3.org und im Netz so viele Beispielseiten dazu?

                  Wo schreibt er das?

                  Irgendwie hab ich ein bissl den Eindruck hier wird aneinander vorbeigeredet. Es geht doch nicht darum ob Du mit xhtml Internetpräsenzen erstellen kannst, darfst oder solltest. Es geht doch nur darum, wie man den Browser dazu überredet dass er die Seiten auch als xhtml interpretiert.
                  Wenn man als Dateiendung einer Seite .html wählt, dann wird wohl jeder Browser die Seite darstellen und nicht den xml-Baum, wie Du es hier beschrieben hast. Das klappt dann aber nur deshalt so wunderbar, weil der Server dem Browser sagt:
                  Ich schicke Dir jetzt eine Datei mit dem mime-type text/html, und der Browser glaubt das dem Server unbesehen, egal was in der Datei noch an Doctypes oder metatags steht.
                  Wenn die Dateiendung .xhtml lautet sollte der Webserver dem Browser sagen:
                  Ich schicke Dir jetzt eine Datei mit dem mime-type application/xhtml+xml. Wenn Du im Browser den xml-Baum siehst, dann ist das ein Zeichen dafür dass der Webserver nicht entsprechend konfiguriert ist. Er kennt den mime-type für die Endung .xhtml einfach nicht und sendet statt dessen text/plain.
                  Dafür gibts zwei Lösungen, einmal die oben beschriebene, Du schreibst Deine Dateien in xhtml (von wegen zukunftsträchtig und so...) aber nimmst die Dateiendung html. Dann interpretiert der Browser das aber auch als html, egal was Du im Dokument anderes behauptest. Dann lass den metatag einfach weg, er behauptet zwar er stünde in einem xhtml-Dokument aber der Browser glaubt ihm nicht.
                  Oder Du sorgst dafür das der Server entsprechend konfiguriert wird (oder Du versucht es zumindest). Dann kannst Du den metatag reinsetzen, musst Du aber nicht.
                  Wenn Du das ganze in der Praxis sehen willst, dann schau Dir den Quelltext dieser Seiten an, es ist der gleiche, aber einmal siehst Du den Quelltext und einmal nur weiß (weils als xhtml interpretiert wird):
                  http://www.fenykh.de/test.xhtml
                  http://fenykh-net.keymachine.de/test.xhtml
                  Hoffe ich konnte Licht ins Dunkel bringen, muss aber sagen, dass ich hier nur geschrieben habe wie ich das verstanden habe, ich kann mich irren.

                  HerrLarsen

                2. Hallo,

                  Was ich NICHT gelesen habe, war, daß man mit xhtml 1.1 keine Internetpräsenzen schreiben soll. WO bitte steht das? Ich habe die ganze letzte Nacht zu dem Thema Beiträge gesucht. Aber weder die w3.org Seite, noch das Forum helfen mir weiter. Im Forum ( so wie auch bei den von Dir angegebenen Links ) kommt man zu Forumsbeiträgen, die zu Forumbsbeoträgen verweisen, die zu Forumbsbeiträgen verweisen, die zu Forumbsbeiträgen verweisen, die zu Forumbsbeiträgen verweisen, . . . . .

                  Das stimmt ganz einfach nicht, da musst du schon genauer hinsehen und intensiver lesen. Die verlinkten Forumsbeiträge sind nicht nur einzeln interessant, sondern oft auch deren Kontext des jeweiligen Threads. Nur ein Link führt zu einem Thread, indem auch ein Postings mit Links ins Archiv von mir steht. Das war es aber auch. Ansonsten ist der Thread insgesamt interessant und aufschlussreich.

                  Mathias

              2. Hallo Mathias,

                Ich sagte bereits, dass die Dateiendung .html dazu führt, dass der Server
                den Inhalt als text/html deklariert (HTTP-Header »Content-Type: text/html«).

                Ich meine mich erinnern zu können, im HTTP-RFC gelesen zu haben daß der
                Webserver auch die Dateien scannen könnte und die http-equiv-Angabe im
                Kopf zum Bestimmen des MIME-Typus verwenden kann. Allerdings Standards
                und die Realität. ;-)

                Tim

                1. Hallo,

                  Ich sagte bereits, dass die Dateiendung .html dazu führt, dass der Server den Inhalt als text/html deklariert (HTTP-Header »Content-Type: text/html«).

                  Ich meine mich erinnern zu können, im HTTP-RFC gelesen zu haben

                  Höchstens unter http://www.w3.org/TR/html401/struct/global.html#adef-http-equiv steht entsprechendes.

                  daß der Webserver auch die Dateien scannen könnte und die http-equiv-Angabe im Kopf zum Bestimmen des MIME-Typus verwenden kann. Allerdings Standards und die Realität. ;-)

                  Klar, aber was sollte man da schon abweichend hineinschreiben, was gleichzeitig kohärent wäre? Was auch immer, es fiele aus dem Rahmen. Es gibt letztlich nur diesem Medientyp, der für HTML geeignet ist. Die Abbildung von Webtechnik auf Medientyp und umgekehrt, hier HTML auf text/html und text/html auf HTML (plus XHTML 1.0 nach den Kompatibilitätsrichtlinien) gemäß RFC 2854, ist in diesem Fall insofern eindeutig, als es keine sinnigen weiteren Medientypen gibt, die sich speziell zur Kennzeichnung von HTML eignen.

                  Im Übrigen wäre auch dies widersinnig: Der Webserver wüsste also, dass er es mit HTML zu tun hat, und parst es entsprechend, um einen meta-Tag mit http-equiv="Content-Type" zu finden. Im meta-Tag stünde dann, dass das grade geparste HTML-Dokument gar kein HTML ist, sondern beispielsweise text/plain. Das wäre z.B. dann sinnig, wenn eine .html-Datei als Quelltext angezeigt werden soll. Doch dann würde der Quelltext von sich behaupten, er sei der »Quelltext« eines text/plain-Dokuments, insofern will man das nicht wirklich.

                  Wenn ein Webserver also HTML-Dokument parst, dann wäre dies, soweit ich es beurteilen kann, nur sinnvoll, um die charset-Angabe aus dem besagten meta-Tag zu extrahieren, um diese dann auch im entsprechenden HTTP-Header aufzuführen.

                  Mathias