Narrative Dokumentstrukturen

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Alle XML-Dokumente sind Bäume. Allerdings sind Bäume sehr allgemeine Datenstrukturen. Falls Sie eine ordentliche Ausbildung in Informatik genossen haben (und vermutlich auch dann, wenn das nicht der Fall ist), werden Ihnen Binärbäume, Rot-Schwarz-Bäume, balancierte Bäume, B-Bäume, geordnete Bäume und andere bekannt sein. Wenn Sie mit XML arbeiten, ist es allerdings höchst unwahrscheinlich, dass eines der Dokumente einer dieser Strukturen entspricht. Stattdessen sind XML-Dokumente die allgemeinste Art von Bäumen ohne besondere Einschränkungen dahingehend, wie die Knoten angeordnet sind oder wie und welche Knoten mit welchen anderen Knoten verbunden sind. Textorientierte XML-Dokumente besitzen anders als datensatzähnliche XML-Dokumente abgesehen von ihrer Baumgestalt kaum eine erkennbare Struktur.

Wie sieht also ein narrativ aufgebautes XML-Dokument aus? Selbstverständlich gibt es da ein Wurzelelement. Jedes XML-Dokument hat eins. Allgemein gesagt, repräsentiert dieses Wurzelelement das Dokument selbst. Wenn also das Dokument ein Buch ist, gibt es das Wurzelelement book. Handelt es sich bei dem Dokument um einen Artikel, ist das Wurzelelement article usw.

Darüber hinaus werden große Dokumente im Allgemeinen in irgendwie geartete Abschnitte aufgeteilt, ein Buch also beispielsweise in Kapitel, ein Artikel in Teile oder juristische Unterlagen in Forderungen. Der größte Teil des Dokuments besteht aus diesen Hauptabschnitten. Manchmal gibt es verschiedene Arten von Abschnitten, zum Beispiel einen für das Inhaltsverzeichnis, einen für den Index und jeweils einen für die Kapitel eines Buchs.

Im Allgemeinen enthält das Wurzelelement außerdem Elemente, die Metainformationen über das Dokument zur Verfügung stellen, z. B. den Titel des Werks, den Autor des Dokuments oder die Zeiten, zu denen das Dokument erstellt und zuletzt verändert wurde. Ein anderes gebräuchliches Muster ist es, die Metainformationen in einem Kindelement des Wurzelelements zu verstauen und den Hauptinhalt des Werks in einem anderen. Auf diese Weise werden HTML-Dokumente geschrieben. Das Wurzelelement ist html. Die Metainformationen werden in das Element head und der Hauptinhalt in das Element body geschrieben. TEI und DocBook folgen ebenfalls diesem Muster.

Die Abschnitte des Dokuments können weiter in Teilabschnitte unterteilt werden. Und auch die Teilabschnitte lassen sich weiter unterteilen. Die Anzahl der Hierarchie-Ebenen hängt im Allgemeinen von der Größe des Dokuments ab. Eine Enzyklopädie wird viele Stufen mit Teilabschnitten besitzen, ein Flugblatt eher keine. Jeder Abschnitt und jeder Teilabschnitt erhalten normalerweise einen Titel. Er kann auch Elemente oder Attribute bekommen, die Metainformationen über den Abschnitt kennzeichnen, wie den Autor oder das Datum der letzten Änderung.

Bis zu diesem Punkt wird gemischter Inhalt noch vermieden. Die Elemente enthalten Kindelemente und Whitespace, und das ist alles. Irgendwann wird es jedoch notwendig, den eigentlichen Text des Dokuments einzufügen, also das, was die Leute dann lesen sollen. In den meisten westlichen Sprachen wird dieser Text wahrscheinlich in Absätze und andere Block-Elemente unterteilt, wie etwa Überschriften, Abbildungen, Marginalien und Fußnoten. Generische Dokument-DTDs, wie DocBook, können über diese Einträge keine weiteren Aussagen treffen.

Absätze und andere Block-Elemente enthalten vor allem aufeinander folgende Wörter, also Text. Ein Teil dieses Texts kann mit Inline-Elementen ausgezeichnet werden. Beispielsweise wollen Sie ja vielleicht anzeigen, dass ein bestimmter Text-String in einem Element ein Datum, eine Person oder einfach wichtig ist. Der meiste Text wird allerdings nicht auf diese Weise gekennzeichnet.

Ein Bereich, in dem die unterschiedlichen XML-Anwendungen nicht übereinstimmen, ist die Frage, ob Block-Elemente weitere Block-Elemente enthalten dürfen. Darf zum Beispiel ein Absatz eine Liste enthalten? Oder darf ein Listeneintrag einen Absatz enthalten? Es ist vermutlich einfacher, mit stärker strukturierten Dokumenten zu arbeiten, in denen Blöcke keine anderen Blöcke enthalten dürfen (vor allem keine Blöcke der gleichen Art). Es gibt jedoch oft gute Gründe, weshalb ein Block andere Blöcke enthalten sollte. In einem langen Listeneintrag oder einem Zitat könnten sich zum Beispiel mehrere Absätze befinden.

Größtenteils ist diese gesamte Struktur, von der Wurzel bis zu dem am tiefsten verschachtelten Element, einigermaßen linear; das heißt, Sie erwarten, dass man die Wörter in ungefähr der gleichen Reihenfolge liest, in der sie im Dokument auftauchen. Würde das Markup plötzlich entfernt und bliebe nur der reine Text erhalten, sollte das Ergebnis mehr oder weniger lesbar sein. Das Markup kann dazu dienen, das Dokument zu indizieren oder zu formatieren, es ist jedoch kein fundamentaler Bestandteil des Inhalts.

Eine weitere wichtige Bemerkung über diese Arten von XML-Dokumenten: Sie bestehen nicht nur aus nacheinander angeordneten Wörtern, sie sind aus Wörtern zusammengesetzt. Was sie enthalten, ist Text, der von Menschen gelesen werden soll. Sie enthalten keine Zahlen oder Daten oder Geld, es sei denn, diese tauchen als Teil des normalen Erzählflusses auf. Der #PCDATA-Inhalt der Elemente auf der niedrigsten Ebene des Baums besitzt hauptsächlich einen Typ: String. Wenn irgendetwas über String hinaus einen echten Typ hat, handelt es sich meist um Metainformationen über das Dokument (Bildnummer, Datum der letzten Änderung usw.) und nicht um den eigentlichen Inhalt des Dokuments.

Das erklärt, warum DTDs keine strenge (oder überhaupt keine) Datentypisierung ermöglichen. Die Dokumente, für die SGML entworfen wurden, brauchten so etwas nicht. Inzwischen übernehmen XML-Dokumente Aufgaben, für die SGML nie vorgesehen war, wie die Überwachung von Beständen oder Volkszählungsdaten, und benötigen daher Datentypen. Aus diesem Grund haben verschiedene Leute und Organisationen Unmengen von Schemasprachen erfunden. Schemas bringen jedoch für erzählende Dokumente nicht mehr als DTDs.

Nicht alle XML-Dokumente sind so wie die hier von uns beschriebenen. Nicht einmal alle erzählend organisierten XML-Dokumente sind so. Allerdings folgt eine überraschend große Anzahl von erzählend organisierten XML-Anwendungen diesem Grundmuster, vielleicht mit einem Kniff hier und da. Der Grund besteht darin, dass dies die Grundstruktur ist, der Erzählungen folgen und die sich in all den Jahrtausenden bewährt hat, seit das Schreiben erfunden wurde. Falls Sie Ihre eigenen DTDs für allgemeine erzählend orientierte Dokumente definieren, werden Sie wahrscheinlich bei einer ganz, ganz ähnlichen Struktur landen. Wenn Sie für speziellere erzählend orientierte Dokumente Ihre eigenen DTDs definieren, sollten die Namen der Elemente Ihren Arbeitsbereich widerspiegeln – falls Sie beispielsweise die nächste Ausgabe des Pfadfinderhandbuchs schreiben, könnte einer der Teilabschnitte Ehrenabzeichen heißen –, die grundlegende Hierarchie des Dokuments, die Metainformationen, Abschnitte und Teilabschnitte, die Blockelemente und der ausgezeichnete Text bleiben aber sicher gleich.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de