doctype
Ralph
- html
Ich habe eine vom Design her relativ unspektakuläre Webseite in Tabellenform. Da funktioniert eigentlich alles wunderbar. Bei der Validierung schimpft der Validator, daß die Seite keine Doctype Deklaration hat. Nun hab ich nach kurzer Beratung eine eingefügt:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Leider klappt das dann mit der Tabelle dann nicht mehr, da es offenbar kein doctype gibt, in dem z.B. die height Angabe für <table> und <td> Tags noch funktioniert. Das wäre mit einer CSS Class relativ umständlich zu ersetzen.
Frage: Wozu also überhaupt Doctypes? Was ist so schlimm, wenn die ganz fehlt, gibt viele Webseiten ohne. Was funktioniert an Code nicht, ohne die Doctype Deklaration?
Hi,
Frage: Wozu also überhaupt Doctypes? Was ist so schlimm, wenn die ganz fehlt, gibt viele Webseiten ohne. Was funktioniert an Code nicht, ohne die Doctype Deklaration?
Wozu dem Browser exakte und klare Anweisungen geben, es ist doch viel besser ihn wild herumraten zu lassen, was der Author eigentlich gemeint hat...
Gruß,
Harlequin
Frage: Wozu also überhaupt Doctypes? Was ist so schlimm, wenn die ganz fehlt, gibt viele Webseiten ohne. Was funktioniert an Code nicht, ohne die Doctype Deklaration?
Wozu dem Browser exakte und klare Anweisungen geben, es ist doch viel besser ihn wild herumraten zu lassen, was der Author eigentlich gemeint hat...
Hallo Harlequin,
findest Du nicht, dass jemand der eine normale Frage gestellt hat, eine ebensolche Antwort verdient?
Gruß
Thorsten
Hi,
findest Du nicht, dass jemand der eine normale Frage gestellt hat, eine ebensolche Antwort verdient?
Sorry, wenn das etwas falsch rüberkam... Ich wollte damit eigentlich nur einen Denkanstoß geben.
Gruß,
Harlequin
@Auge: Danke! Leuchtet mir ein.
@Harlekin Wenn ich nen Denkanstoß noch gebraucht hätte, wär ich nicht hier... Daß ich mit der DTD Regeln festlege ist mir klar. Die Frage ist, wozu, wenns ohne diese Regeln offenbar besser läuft.
Nun gut, bezüglich Fehlertoleranz.. Die Seite hab ich im Firefox noch nicht angesehen. Im IE sieht sie ok aus. Ich finds nur seltsam, daß die Angabe <table height="xxx"> zumindest im IE nicht als Fehler ignoriert sondern als Anweisung korrekt umgesetzt wurde. War nie Bestandteil von html, wie ich lernen musste, wird aber von Browsern interpretiert.. Lustig. Da drängt sich doch die Frage auf, wozu sich mit DTD einengen, wenn die Browser doch viel mehr können. Die Frage stellt sich erneut umso heftiger, sollte sich rausstellen, daß die auch mit Firefox korrekt angezeit wird und damit mit den 2 gängigsten aktuellen Browsern. Zumal sich Standards wie DTD ohnehin "oft" ändern, wenn man das mal mit z.B. DIN Normen für Papiergrößen vergleicht.
Aber ich werd auf jeden Fall versuchen, die mit Doctype Definition und dann auch validiert DTD konform zu schreiben. Man lernt nie aus.
hi,
Daß ich mit der DTD Regeln festlege ist mir klar. Die Frage ist, wozu, wenns ohne diese Regeln offenbar besser läuft.
_Wenn_ es ohne Regewln "besser läuft" - spätestens dann ist der Zeitpunkt gekommen dich zu fragen, was du falsch gemacht haben könntest.
Ich finds nur seltsam, daß die Angabe <table height="xxx"> zumindest im IE nicht als Fehler ignoriert sondern als Anweisung korrekt umgesetzt wurde.
Die Fehlertoleranz des IE ist extrem hoch, oftmals zu hoch.
Da drängt sich doch die Frage auf, wozu sich mit DTD einengen, wenn die Browser doch viel mehr können.
Weil, wie schon gesagt wurde, ohne Regeln der Browser "raten" muss, was du gemeint haben könntest.
In diesem Falle rät er zufällig mal richtig, das was du _gemeint_ (aber nicht nach den Regeln _korrekt_ ausgedrückt) hattest.
Im nächsten Fall tut er es vielleicht schon nicht mehr - und dann bist du am Suchen, wo der Fehler liegen könnte.
Zumal sich Standards wie DTD ohnehin "oft" ändern, wenn man das mal mit z.B. DIN Normen für Papiergrößen vergleicht.
Nein, die DTDs für die derzeit gebräuchlichen HTML-Varianten ändern sich überhaupt nicht mehr.
gruß,
wahsaga
Hallo
Nun gut, bezüglich Fehlertoleranz.. Die Seite hab ich im Firefox noch nicht angesehen.
Das sollte man aber zuallererst tun, da dieser einer der standardkonformsten Browser ist. Wenn es dort aussieht, wie gewünscht, kümmere man sich um die Anzeigefehler anderer Browser.
Stichwort: CSS-Browserweichen
Im IE sieht sie ok aus. Ich finds nur seltsam, daß die Angabe <table height="xxx"> zumindest im IE nicht als Fehler ignoriert sondern als Anweisung korrekt umgesetzt wurde.
Dieser ist der fehlertoleranteste der am Markt befindlichen Browser.
War nie Bestandteil von html, wie ich lernen musste, wird aber von Browsern interpretiert.. Lustig.
Ausflug in die Geschichte: Es war einmal eine Zeit, da gab es einen Krieg. So was gibt es zwar immer wieder, hier ist aber ein ganz bestimmter gemeint, der Browserkrieg. Es kämpften zwei Parteien, Microsoft mit dem MSIE und Netscape mit dem Netscape Navigator, um die Gunst der Designer und Benutzer. Denn HTML bot damals keine Möglichkeiten der optischen Gestaltung (in Hinsicht auf Anordnung von Elementen, Farbgebung etc. CSS gab es noch nicht bzw. steckte in den Kinderschuhen.).
Sie taten dies unter Anderem mit immer neuen Ideen, solche Gestaltungsmöglichkeiten in Form neuer Elemente und Attribute für HTML-Dateien zu erfinden. Dabei kamen z.B. Frames, Table, Marquee, Blink als Elemente und diverse Attribute zur Farbgebung und Schriftgestaltung raus. Einerseits wurden Struktur und Gestaltung vermischt, andererseits wurden einige dieser Elemente _nur_ von den Produkten der eigenen Firma unterstützt (Andere, wie <table>, fanden Eingang in den Standard).
Dies gilt aber wie gesagt nicht für all diese "Erfindungen". Einige fanden, auch ohne im Standard verankert zu werden, allgemeine Verbreitung und werden auch heute noch von so ziemlich jedem (graphischen) Browser angewandt.
Da drängt sich doch die Frage auf, wozu sich mit DTD einengen, wenn die Browser doch viel mehr können.
Weißt du, ob du dein Layout noch in einem Jahr magst? Wenn nicht, musst du jeden HTML-Quelltext bearbeiten, um es zu ändern.
Nutzt du jedoch CSS zur Gestaltung des Layouts, und hast (ganz wichtig!) deinen HTML-Quelltexten eine sinnige Struktur gegeben, die du nicht mehr anfassen musst, brauchst du ausschließlich Änderungen in der CSS-Datei vornehmen.
Die Frage stellt sich erneut umso heftiger, sollte sich rausstellen, daß die auch mit Firefox korrekt angezeit wird und damit mit den 2 gängigsten aktuellen Browsern.
Die beiden mögen auf dem Desktop unbestritten die Gängigsten sein, allerdings gibt es einen (wenn auch _noch_ schwachen) Trend hin zu mobilen Geräten, die andere Methoden der Gestaltung erfordern. Ein PDA-Display hat nunmal eine wesentlich kleinere Auflösung.
Da heißt es, sich zwischen desktoporientiertem Layout, welches dann quergescrollt werden muss, oder einer strikten, durch CSS ermöglichten, Trennung von Struktur und Gestaltung zu entscheiden. Letztere ermöglicht, aus einer HTML-Datei mit Hilfe der Mediatypen für CSS unterschiedliche Layouts für unterschiedliche Ausgabegeräte anzubieten.
Zumal sich Standards wie DTD ohnehin "oft" ändern, wenn man das mal mit z.B. DIN Normen für Papiergrößen vergleicht.
Mit Verlaub: unpassender Vergleich.
Das Papierformat wurde einmal festgelegt, genauso wie z.B. die DTD für HTML1, HTML2, HTML3.2 u.s.w. etc. pp.. Es kommen nur neue Regelsätze (DTDs) hinzu, die Alten bleiben so, wie sie sind.
Entscheide dich für einen Doctype, den du benutzen (und einhalten) willst und gut ist's.
Tschö, Auge
So, im Firefox siehts... arg aus. Der ignoriert mein Stylesheet. Werd ich wohl mal was tun müssen.
Hallo
Ich habe eine vom Design her relativ unspektakuläre Webseite in Tabellenform. Da funktioniert eigentlich alles wunderbar. Bei der Validierung schimpft der Validator, daß die Seite keine Doctype Deklaration hat. Nun hab ich nach kurzer Beratung eine eingefügt:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">... Das wäre mit einer CSS Class relativ umständlich zu ersetzen.
Was soll daran umständlich sein? class-Attribunt in das <table>-Tag, benötigte Definition, hier height:...;
in's Stylesheet, das war's.
Frage: Wozu also überhaupt Doctypes? Was ist so schlimm, wenn die ganz fehlt, gibt viele Webseiten ohne.
Warum gegen die DTD validieren, wenn du deren Regeln doch nicht einhalten willst?
Was funktioniert an Code nicht, ohne die Doctype Deklaration?
Streng genommen weiß der Browser ohne diese Deklaration nicht, nach welchen Regeln er die Angaben umzusetzen hat. Deshalb gibt es Regeln (z.B. die HTML-DTD) und die Doctype-Angabe am Beginn eines Dokuments, die dem Browser mitteilt, welchen Regelsatz er anwenden soll.
Soweit die Theorie. Praktisch ist es so, dass viele Browser (verschieden stark) fehlertolerant sind. Darauf kann (besser gesagt: darf) man sich aber nicht verlassen. Denn was in dem einen Browser das gewünschte Ergebnis bringt, funktioniert in einem anderen eben nicht. Und dann fängt das Raten und Friemeln an.
Deshalb gibt es feste Regeln, und deshalb ist es vorteilhaft sich auch, unabhänging von Bugs verschiedener Browser, daran zu halten.
Tschö, Auge
Hi,
Frage: Wozu also überhaupt Doctypes?
Spielerei von Menschen, denen HTML nicht bürokratisch genug ist. >;->
Sie sind von ihrem Sinn her gesehen (bei HTML) praktisch irrelevant.
Es gibt *keinen einzigen* HTML-Browser, der sich strikt nach der DTD richtet, die man ihm im Doctype angibt - weder bei den vorgefertigten Standard-DTDs, erst recht nicht bei eigenen, die man dort auch angeben kann.
Was ist so schlimm, wenn die ganz fehlt, gibt viele Webseiten ohne.
Nichts, wenn Du weißt, was Du tust. Denn ...
Was funktioniert an Code nicht, ohne die Doctype Deklaration?
... MS war der (sinnvollen) Meinung, die nachweislichen Fehler, die die IE-Engine so macht, zum Teil auszumerzen, aber, verständlicherweise, auch eine Möglichkeit zu haben, trotzdem abwärtskompatibel zu bleiben (damit existente, IE-angepaßte Seiten nicht plötzlich übel aussehen).
Dummerweise sind ein paar Oberdeppen (von MS) auf die hirnrissige Idee gekommen, die Art des Renderings (Quirks- & Standardmode genannt) vom Doctype abhängig zu machen (anstatt, wie z.B. für sonst jeden Scheiß, gerade ein META-Tag zu nehmen) und nannten es DOCTYPE-Sniffing. Dummerweise haben beide Dinge nichts, aber auch wirklich gar nichts miteinander zu tun, und sie haben es auch noch geschafft, bei dieser Dummheit einen üblen Fehler einzubauen.
Ebenso dummerweise haben die anderen Browserhersteller gedacht: Holla, das übernehmen wir doch.
Zum TABLE-Problem zurück: Da kein HEIGHT-Attribut (offiziell) existiert, ist es *ohnehin* nicht ratsam, sich drauf zu verlassen. Aber es spricht IMHO nichts dagegen, für neue Browser mit CSS, für alte Browser mit Attribut zu arbeiten. Letztlich: Es gibt auch Browser, die beides ignorieren (können) ...
Gruß, Cybaer
PS: Ich verzichte auf den Doctype, da meine Seiten ohnehin wohlgeformt sind und ich nicht "lügen" will. Meine HTML-Dokumente richten sich nach keiner Standard-DTD, noch müssen sie das.