html.pages.de



die zweite ausgabe von html.pages handelt..
vom mythos um das <HTML>-Tag
und den freunden HEAD und BODY:

warum sie vollkommen unnötig sind,
nur ärger machen und
getrost weggelassen werden können.

in den urzeiten, als html noch keine version besass, gab es die tags HTML, HEAD und BODY noch gar nicht. damit html aber ein korrekter SGML-DOCTYPE ist, muss ein tag definiert sein, welches ein dokument vollständig umfasst, und genauso heisst wie der doctype selbst. also wurden <HTML> sowie sein zwilling </HTML> erfunden.

zudem sollte festgelegt werden, daß meta-information wie TITLE stets am anfang eines dokumentes stehen sollte. in SGML war das am sinnvollsten zu realisieren, in dem man ein HEAD definiert, und wenn man schon dabei ist, einen BODY gleich dazu.

kaum eingeführt haben die puristen diese sofort eingesetzt, und die später eingestiegenen pragmatiker auch, weil sie dachten das gehört sich so. du auch?

unnötig die tags wurden aus syntaktischer notwendigkeit eingeführt, aber von vorn herein mit der eigenschaft, daß sie weggelassen werden dürfen, ohne das deshalb das dokument kein gültiges html-dokument wäre.
das ist bis heute so (siehe auch in der html-spezifikation), und jeder SGML-parser beherrscht dieses weglassen der rahmentags sofern die header- und body-tags darin weiterhin nicht durcheinandergemischt sind!

der grund, warum diese keine pflicht wurden kann vermutet werden:

  • aus kompatibilität zu den bereits existierenden webseiten
  • weil die leute, die damals webseiten schrieben, freaks waren, die unnötigen schnickschnack nicht gern haben
  • weil es ja auch gar nicht nötig war
fehlerträchtig der grund warum ich explizit empfehle HTML, HEAD, /HEAD, /BODY und /HTML nicht zu benutzen liegt in meiner professionellen erfahrung: wenn htmlisten immerzu und immer mal wieder an einer datei rumdoktorn rutscht es ihnen verdammt leicht und oft raus, elemente nach dem /BODY dranzuhängen (nach dem aber per definition nichts folgen darf außer /HTML), oder die reihenfolge zu verhudeln - etwa ein SCRIPT in den body zu stellen, oder ein MAP in den header. der netscape ist nett und tut was man erwartet, aber korrektes html ist es dann nicht mehr, ergo können sich andere browser sowie robots (suchmaschinen etc.) daran aufhängen.

mike rawsoft hat so etwas sogar einmal absichtlich gemacht - die demo-cd zu frontpage hatte fälschlicherweise ein BODY vor dem FRAMESET - dadurch wurde die cd nur mit dem exploder betrachtbar weil netscape ausnahmsweise mal konsequent den FRAMESET ignoriert hat und eine blanke seite zeigte.

das einzige tag, welches pflicht ist in jedem dokument ist lustigerweise TITLE. ich empfehle es sofort an den anfang zu stellen sobald man ein dokument anfängt. anschliessend sollte man den BODY anlegen (naheliegenderweise, denn wer macht heutzutage schon dokumente ohne farbzuweisungen) welcher vollkommen ausreichend ist um die obere hälfte, den header des dokumentes, von der unteren hälfte zu trennen. als beispiel diene der source dieses artikels. sollte man anschliessend tatsächlich noch gebrauch machen wollen von META oder dem mächtigen BASE-tag, geht man zum anfang des dokumentes und stellt den kram vor das BODY tag. und schon ist sichergestellt, daß man nichts mehr falsch machen kann und sich im sonst üblichen grossen verhau der tags verliert!

und nochmal zu meiner arbeitserfahrung: ich schreibe seit anfang mein html per hand mit dem text-editor vim - ich kann mich nicht erinnern je header und body-tags falsch angeordnet zu haben, im gegenteil hatte ich situationen, in denen es praktisch war automatisiert am ende einer html-datei was anhängen zu können ohne irgendwelche /HTML's herausfummeln zu müssen. umgekehrt habe ich sehr oft html-code reparieren müssen, bei denen die autoren eben solche anordnungsfehler gemacht hatten.