Im Wesentlichen wissen Sie nun bereits, wie
XML-Dokumente aussehen dürfen. Die
Hauptbestandteile sind die Elemente, die den eigentlichen
Inhalt des Dokuments enthalten. Gelegentlich ist es aber auch
wünschenswert, in das Dokument beispielsweise Bemerkungen oder
Ideen für den weiteren Text einzufügen, die in der
formatierten Fassung nicht sichtbar sindAuch das
Manuskript dieses Buches ist voll von Bemerkungen, die von
unserer Verzweiflung zeugen, wenn der
DSSSL-Prozessor wieder einmal nicht das tut, was er
soll. Häufig zu finden sind auch die offenen Punkte, die noch zu
erledigen sind, bevor das Manuskript fertig ist. Hoffentlich
haben wir bis jetzt alle Punkte
erledigt.... In XML
heißt ein solcher Text Kommentar.
Wenn Sie bereits Kommentare in HTML kennen, wird Ihnen die XML-Syntax sehr bekannt vorkommen, denn Kommentare sind in HTML und XML identisch. Das folgende Bild zeigt den Aufbau:
Diese Syntax stimmt auf den ersten Blick mit der von SGML überein. Tatsächlich sind XML-Kommentare ein Sonderfall von SGML-Kommentaren. Das heißt, jeder XML-Kommentar ist ein SGML-Kommentar, aber nicht umgekehrt.
Kommentare dürfen überall dort im Dokument stehen, wo Text zulässig ist, also insbesondere nicht innerhalb der Tags anderer Elemente. Der Text innerhalb eines Kommentars gehört nicht zum Dokument. Es ist einem XML-Prozessor freigestellt, ob er Kommentartexte für ein Anwendungsprogramm zugänglich macht oder nicht.
<!-- Henning, kannst Du folgenden Abschnitt noch einmal durchlesen. Hab' ich etwas vergessen? Ist er verständlich? --> ... diese Anweisung dient der <em>interoperability<!-- dieses Wort muss noch übersetzt werden! --></em>
Wie Sie sehen, sind Kommentare auch zwischen den Start- und End-Tags von Elementen erlaubt und dürfen sich über mehrere Zeilen erstrecken. Das erste Beispiel ist sicherlich nicht besonders gut zu lesen, es dient nur der Demonstration. Fügen Sie Kommentare so ein, wie es Ihnen am besten gefällt. Dem XML-Prozessor ist es egal.
Keinesfalls sollten Sie Kommentare mit einer
bestimmten Semantik belegen. Schreiben Sie
Kommentare so, dass Ihr Dokument auch nach dem Entfernen der
Kommentare uneingeschränkt zu gebrauchen
ist.Kommentare:Mißbrauch Falls
Sie Ihre Dokumente mit einem selbst geschriebenen Programm
weiterverarbeiten, ist es verführerisch, Anweisungen für die
Verarbeitung in Kommentare zu schreiben. Abgesehen davon, dass
es ein schlechter Stil ist, verlieren Instanzen dadurch an
Portabilität. Nur noch Ihr Programm kann Ihr Dokument adäquat
verarbeiten. Es gibt eine Möglichkeit, solche Anweisungen in eine
Instanz einzufügen. Der Name dafür ist Processing
Instruction
. Bevor wir erklären, wie so etwas aussieht,
wollen wir noch ein Beispiel für Kommentare zeigen, die eine
eigene Semantik haben.
In den frühen Tagen des Web wurde HTML
aus dem Blickwinkel eines
SGML-PuristenOb keiner, einer oder gar
beide der Autoren sich selbst dazu zählen, sei Ihrer Fantasie
überlassen. Fragen Sie nur nicht deren Kollegen, die haben
eine eigene Meinung dazu :-) oftmals
nicht besonders
gut
behandelt. Meist waren (und sind)
dafür neue Browser-Features, wie etwa blinkender Text,
verantwortlich. Aber auch auf der Server-Seite gibt es
Beispiele, und eines davon ist der Kommentar.
Neben dem CERN-Server war der Server des National Center for Supercomputing Applications, kurz NCSA, der zweite weit verbreitete Web-Server. Noch heute ist der daraus hervorgegangene Apache der meistverwendete Server. Geerbt hat der Apache vom NCSA-Server eine Eigenschaft, die sich Server Side Includes (SSI) nennt. Darunter versteht man die Möglichkeit, in einen HTML-Text weitere HTML-Dateien dynamisch, d.h. beim Laden der Seite, einzufügen. SSI sind ein bequemer Weg, etwa eine Fußzeile in alle Seiten eines Webbereichs einzufügen oder auch eine Navigationsleiste am Anfang der Seiten. Ändert sich der inkludierte Text, so sind mit einem Schlag alle Seiten aktualisiert.
So schön die SSI auch sind, die Realisierung ist nicht gelungen, denn der Apache liest die HTML-Seite und interpretiert gewisse Anweisungen in den Kommentaren. Das Einbetten einer anderen HTML-Datei sieht beispielsweise so aus:
<!--#include file="fusszeile.html" --> <!-- SSI-Anweisungen des Apache stehen in Kommentaren :-( -->
Das Problem ist hierbei, dass ein SGML/XML-Parser den Inhalt eines Kommentars gar nicht an ein Anwendungsprogramm weiterreichen muss. Er könnte also verloren gehen. Das darf dem Server natürlich nicht passieren. — Wir wollen hier nicht diskutieren, wie man alle Optionen der Server Side Includes besser realisiert hätte — das gezeigte Beispiel wäre mit einem externen Entity auch leicht umzusetzen —, zumal hier viele Faktoren (zum Beispiel auch die Geschwindigkeit) eine Rolle spielen. Aus syntaktischer Sicht hätte man aber die Alternative der Processing Instructions wählen sollen.