In unserem Podcast diskutiert Thomas Bahn über Nutzen, Anwendungen und Erfahrungen aus den Bereichen Chatbots und Künstliche Intelligenz. Mehr erfahren

Domino Webseiten und DocType-Definition

von Bernd,
assono GmbH, Standort Hamburg,

Seit Version 7.0.2 kann mit Hilfe des Feldes $$HTMLFrontMatter der DocType von durch den HTTP-Task erzeugten Webseiten bestimmt werden.

Mein erster Gedanke war sofort, nun kann ich endlich XHTML-Ausgaben generieren. Doch auf die Generierung des HTMLs hat die Angabe keine Auswirkung. Es wird weiterhin HTML 4.01 Transitional erzeugt. Wenn sich die Ausgabe nicht beeinflussen lässt, warum sollte man den DocType angegeben?

Spannend wird die DocType-Angabe im Zusammenhang mit dem Internet Explorer und Cascading Style Sheets (CSS). Bis einschließlich der Version 5.5 des IE wurden bei Angaben bzgl. der Breite eines Block Elementes (<div>, <h1>, <p>, etc.) entgegen der Spezifikation die Breite des Rahmens und des Innenabstandes von der Gesamtbreite abgezogen. Dieses Verhalten wird auch als "Box Model Bug" bezeichnet. Mit der Version 6 hat Microsoft diesen Fehler behoben. Nun standen die Entwickler aber vor dem Problem, dass es unzählige Webseiten gab, die auf die falsche Darstellung hin optimiert waren. In diesem Zusammenhang bekommt der DocType-Angabe eine besondere Aufgabe zuteil.

Findet der IE eine DocType-Definition ohne URI-Angabe
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,
geht er von einer älteren HTML-Datei aus und schaltet in den so genannten "Quirks Mode". In diesem Modus wird bei Breitenangaben die laut Spezifikation falsche Darstellung gewählt.

Bei einer Angabe einer DocType-Definition mit URI-Angabe
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
befindet sich der IE im "Standards Mode", in dem Breitenangaben richtig interpretiert werden.

Dieses Verhalten wird auch als Dokumenttyp-Weiche ("Doctype Switch") bezeichnet.

Was ist mit Firefox und Opera? Diese Browser haben die Breitenangaben schon immer richtig interpretiert. Wenn das gleiche Cascading Style Sheet sowohl für IE als auch für Firefox und Opera verwendet werden soll, so ist es wichtig das der IE sich im Standards Mode befindet. Leider gibt der HTTP-Task von Domino standardmäßig die DocType-Definition ohne URI aus, was den IE im Quirks Mode operieren lässt.

Der Domino Entwickler kann einfach in eine webfähige Maske im Feld $$HTMLFrontMatter die Formel
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" + @Newline
einfügen und schon befindet sich der Internet Explorer im "Standards Mode".

Ich will das Verhalten einmal an einem Beispiel demonstrieren.

Der folgenden HTML-Code sollte laut Spezifikation eine Breite von 280 Pixeln ergeben.
<div style="width:200px; padding:20px; border:20px solid #D4112F;">Soll-Breite: 280px</div>
Die Breite setzt sich zusammen aus 20px (linker Rand) + 20px (linker Innenabstand) + 200px (Breite des Blocks) + 20px (rechter Rand) + 20px (rechter Innenabstand) = 280px.

Ohne die Angabe der URI ("http://www.w3.org/TR/html4/loose.dtd") in der DocType-Definition ist die Gesamtbreite der Box im Internet Explorer nur 200px.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
A picture named M2

Mit der vollständigen DocType-Definition mit URI stellt der Internet Explorer die Box richtig dar.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
A picture named M3


Firefox stellt auch ohne URI-Angabe die Gesamtbreite der Box richtig dar.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
A picture named M4

Ihr Domino Server befindet sich noch nicht auf der Version 7.0.2? Ab der Version 6.5.3 kann auch Ihnen geholfen werden. Mit dem Eintrag DominoCompleteDoctype in der notes.ini kann global eingestellt werden, welche DocType-Definition verwendet werden soll.

notes.ini DocType-Definition
DominoCompleteDoctype=0 (default) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
DominoCompleteDoctype=1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/
html4/loose.dtd">
DominoCompleteDoctype=2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/
html4/strict.dtd">

Siehe auch die neue IBM developerWorks
Datenbank mit "Lotus Notes/Domino Notes.ini settings"

http://www-128.ibm.com/developerworks/lotus/documentation/notes-ini/#D


Doch Vorsicht mit der Änderung des notes.ini-Eintrages
wenn Sie schon einige webfähige Domino-Anwendungen haben. Dadurch dass
die Einstellung global gilt, werden bei allen HTML-Seiten die DocType-Definition
angepasst. Somit wird bei jeder HTML-Seite im Internet Explorer die Breitenangabe
laut Spezifikation bestimmt, was vielleicht nicht unbedingt dass ist, was
der Entwickler beim Erstellen vorgesehen hat. wink.gif

Fachbeitrag Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie haben Interesse an diesem Thema?

Gerne bieten wir Ihnen eine individuelle Beratung oder einen Workshop an.

Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen?

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Gerne erstellen wir eine individuelle Demo für Sie.

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 416
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de