XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   (X)HTML (http://xhtmlforum.de/forumdisplay.php?f=72)
-   -   Firefox rendert Seite nicht als XHTML Code (http://xhtmlforum.de/showthread.php?t=67417)

helloworld 03.05.2012 17:43

Firefox rendert Seite nicht als XHTML Code
 
Ich habe ein Problem bei der Darstellung einer XHTML Datei mit folgendem Code:

HTML-Code:

<?xml version="1.0" encoding="UTF-8"?>
<!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">
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

<head>
<title>Selektoren</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>


<body>
<div id="kopf">Kopfbereich der Webseite</div>

<div id="inhalt">
  <h1 class="wichtig">Eine wichtige Überschrift</h1>
  <p>Die Standardfarbe für Absätze ist Grün</p>
 
  <h1 class="details">Eine Überschrift für Details</h1>
  <p class="details">Hier ein Absatz mit Details</p>
 
  <h1>Eine Standard Überschrift</h1>
  <p>Und nun wieder ein Standard-Absatz</p>

</div>
<div id="fuss" class="detail">Fußbereich der Webseite</div>
</body>
</html>

Die dazu passende stylesheet.css Datei:
Code:

h1, p { color:green; }
h1.wichtig { color:red; }
.detail { color:blue; }
#kopf { color:white;
        background:black; }
#inhalt { background:silver; }
#fuss { background:silver; }


Wenn ich den XHTML Code in einer Datei mit der Endung *.xhtml speichere und im Firefox Browser öffne, dann erhalte ich die Fehlermeldung:
Zitat:

Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt.

Wenn ich aber den XHTML Code in einer Datei mit der Endung *.html speichere, dann wird die Seite zwar mithilfe des CSS dargestellt, aber der dann im Firefox arbeitende Parser ist dann nicht der für XHTML, sondern der für HTML.
Was sich auch zeigen läßt, wenn man z.b. invaliden XHTML Code wie z.b. ein Tag, bei dem das Endtag fehlt, in den XHTML Code einfügt, denn dann wird die Seite immer noch dargestellt, was bei XHTML nicht sein dürfte.


Daher würde ich nun gerne wissen, warum der Browser die CSS Datei nicht dazuläd, wenn ich den XHTML Code in einer Datei mit der Endung *.xhtml speichere.

Weiß das jemand?

PS:
Das Problem tritt beim direkten lokalen Laden der HTML Dateien mit dem Browser auf, es liegt also kein Webserver dazwischen.


Und das Firefox den XHTML Code als HTML Code mit dem HTML Parser und nicht mit dem XHTML Parser behandelt, wenn die Datei auf *.html endet, kann man leicht herausfinden, in dem man einen fehlerhaften Code in den Code einfügt.
Z.B. wird folgende falsche Verschachtelung
HTML-Code:

<p><h1>Test</p></h1>
ignoriert und die Seite dargestellt.

Speichert man die Datei aber mit der Endung *.xhtml ab, dann wirft der fehlerhafte Code, wie man es von XHTML erwartet, einen Parser Fehler.

gato 03.05.2012 18:13

Zitat:

Zitat von helloworld (Beitrag 515742)
Ich habe ein Problem bei der Darstellung einer XHTML Datei mit folgendem Code:

Was sagt der Validator zu deinem Problem?

Zitat:

Zitat von helloworld (Beitrag 515742)
Wenn ich den XHTML Code in einer Datei mit der Endung *.xhtml speichere und im Firefox Browser öffne, dann erhalte ich die Fehlermeldung:

Der Hinweis kommt in allen konformen Browsern. Es ist keine Fehlermeldung, nur der Hinweis, dass mit dem Dokument keine Stylesheetdatei verknüpft ist.

Zitat:

Zitat von helloworld (Beitrag 515742)
Daher würde ich nun gerne wissen, warum der Browser die CSS Datei nicht dazuläd, wenn ich den XHTML Code in einer Datei mit der Endung *.xhtml speichere.

Weiß das jemand?

Weil du einen bestimmten Fehler in deinem Quelltext hast, erkennt der Browser nicht, dass es sich um XHTML-Quelltext handelt. Der Quelltext wird als generisches XML verarbeitet. In generischem XML hat das link-Element keine Bedeutung, es wird also kein Stylesheet eingebunden (wie auch?).

P.S. Die XML-Deklaratuion ist optional, wenn du UTF-8 als Kodierung verwendest.

Zudem sollte in der Meta-Angabe nicht der tatsächlich verwendete Medientyp stehen, sondern immer text/html (nicht alle Browser, für die diese Angabe gedacht ist, können mit application/xhtml+xml umgehen).

helloworld 03.05.2012 20:38

Zitat:

Zitat von gato (Beitrag 515743)
Was sagt der Validator zu deinem Problem?

Wie bereits geschrieben, die HTML Seite ist ein Offline Dokument, den Validator kann ich also schlecht nutzen:

Zitat:

Das Problem tritt beim direkten lokalen Laden der HTML Dateien mit dem Browser auf, es liegt also kein Webserver dazwischen.
Zitat:

Weil du einen bestimmten Fehler in deinem Quelltext hast, erkennt der Browser nicht, dass es sich um XHTML-Quelltext handelt. Der Quelltext wird als generisches XML verarbeitet. In generischem XML hat das link-Element keine Bedeutung, es wird also kein Stylesheet eingebunden (wie auch?).
Das wäre ein Hinweis, aber welcher Fehler soll das sein?
XHTML spezifische Fehler meldet Firefox eigentlich, wenn die Datei als XHTML Datei erkannt wurde.

Selbst wenn ich den Code auf das allernötigste reduziere, bleibt es bei der Fehlermeldung und ich finde keinen Fehler im Code:

HTML-Code:

<!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>
  <link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>

<body>

</body>
</html>



Zitat:

Zudem sollte in der Meta-Angabe nicht der tatsächlich verwendete Medientyp stehen, sondern immer text/html (nicht alle Browser, für die diese Angabe gedacht ist, können mit application/xhtml+xml umgehen).
Normalerweise macht das der Webserver und der sollte dann schauen, ob der Browser application/xhtml+xml versteht und erst dann wird entsprechend entschieden.
Standardmäßig es als text/html zu veschicken ist auch falsch, weil der Code dann immer mit dem HTML Parser interpretiert wird.
In diesem Fall handelt es sich aber um eine Offlinedatei und ich will hier XHTML testen. Deswegen steht das Meta Tag drin, aber man könnte es auch komplett weglassen, wenn ein Webserver benutzt wird und der das übernimmt.

helloworld 03.05.2012 20:49

So, nach einem direkten Vergleich mit dem Beispielcode auf dieser Webseite des W3C:
XHTML 1.1 - Conformance Definition

Habe ich den Fehler nun gefunden.

beim
xmlns="http:// ... Tag

fehlte nach http ein Slash.
Das war's, jetzt funktioniert es.

Dieser Text war auch hilfreich, er hat mich dazu gebracht nochmal zu vergleichen und einen Code vom W3C zu nutzen.
Zitat:

Weil du einen bestimmten Fehler in deinem Quelltext hast, erkennt der Browser nicht, dass es sich um XHTML-Quelltext handelt. Der Quelltext wird als generisches XML verarbeitet. In generischem XML hat das link-Element keine Bedeutung, es wird also kein Stylesheet eingebunden (wie auch?).


Danke für die Hilfe.

gato 03.05.2012 21:27

Zitat:

Zitat von helloworld (Beitrag 515746)
Wie bereits geschrieben, die HTML Seite ist ein Offline Dokument, den Validator kann ich also schlecht nutzen:

Unsinn. ;)

Zitat:

Zitat von helloworld (Beitrag 515746)
Das wäre ein Hinweis, aber welcher Fehler soll das sein?

Der Validator hätte es dir verraten :)

Zitat:

Zitat von helloworld (Beitrag 515746)
Normalerweise macht das der Webserver und der sollte dann schauen, ob der Browser application/xhtml+xml versteht und erst dann wird entsprechend entschieden.

Ich habe nichts von einer Veränderung der Angabe im HTTP-Header gesagt. Die kannst du gerne beibehalten.

Zitat:

Zitat von helloworld (Beitrag 515746)
Standardmäßig es als text/html zu veschicken ist auch falsch, weil der Code dann immer mit dem HTML Parser interpretiert wird.

Was in der Meta-Angabe steht hat keine Auswirkungen auf den Parser (zumindest nicht so, wie du es gerade dargestellt hast). Welcher Parser verwendet wird, wird durch die Angabe im HTTP-Header festgelegt.

Zitat:

Zitat von helloworld (Beitrag 515746)
In diesem Fall handelt es sich aber um eine Offlinedatei und ich will hier XHTML testen. Deswegen steht das Meta Tag drin, aber man könnte es auch komplett weglassen, wenn ein Webserver benutzt wird und der das übernimmt.

Gerade weil Dokumente sich an lokaler Stelle befinden können, ist die korrekte Angabe der Kodierung innerhalb des Dokuments immer sinnvoll.

Dass der Medientyp in dem Element angegeben wird, ist das eigentlich Unsinnige dabei. Deshalb entfällt die Angabe ja auch in den aktuellen Versionen von HTML und XHTML.

Dass im meta-Element immer text/html angegeben werden sollte (obwohl das nicht den Tatsachen entspricht), hat aber, wie gesagt, damit zu tun, dass nicht alle Browser die Kodierung richtig herauslesen können, wenn etwas anderes als text/html enthalten ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:45 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2022, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2022