UNIVERSITÄT GIESSEN
Institut für Informatik
Dr. Stefan Brass
<EMAIL>
<FROM>sbrass@sis.pitt.edu</FROM>
<TO>brass@informatik.uni-giessen.de</TO>
<DATE>200006201440</DATE>
<SUBJECT>Test</SUBJECT>
<CONTENTS>Funktioniert meine neue
Email Adresse schon?</CONTENTS>
</EMAIL>
Es hat gewisse Ähnlichkeiten zum veralteten hierarchischen Modell. Auf der anderen Seite ist es ein semistrukturiert Datenmodel (und damit sehr modern): Schwächer strukturiert als relationale Datenbanken, stärker als reiner Text (z.B. Attribute können fehlen oder mehrere Werte haben, manchmal eine geschachtelte Struktur aufweisen, und manchmal nur Text enthalten).
Es wird gesagt, daß noch immer der weit größere Teil der für Unternehmen relevanten Informationen nicht in Datenbanken gespeichert ist, sondern in Dokumenten steht (und in den Köpfen der Mitarbeiter).
Tatsächlich verwenden manche Studenten sogar verschiedene Farben mit verschiedenen Bedeutungen.
Dieser Vorläufer von SGML ist in einem Projekt bei IBM entstanden, in dem ein System zur Verwaltung von juristischen Dokumenten entwickelt wurde.
Zum Beispiel könnte man Kursiv-Schrift für Hervorhebungen verwenden, aber auch für definierende Vorkommen von Begriffen, und für Namen. Für eine Rechtschreib-Prüfung ist es nun wichtig, daß das Programm Namen erkennt. Für die Erstellung eines Glossars oder Indexes müssen müssen die Definitionen erkannt werden. Für einen Menschen ist es nicht schwierig, diese verschiedenen Verwendungen kursiver Schrift zu unterscheiden, aber Computer sind dumm und brauchen explizite Markierungen. Indem für inhaltlich verschiedene Dinge die gleiche Markierung verwendet wurde, ist es zu einem Informationsverlust gekommen.
Zum Beispiel erfordert auch das automatische Erstellen eines Inhaltsverzeichnisses, daß Kapitelüberschriften klar als solche gekennzeichnet sind, und nicht einfach nur als groß und fett. Besondere Warnungen im Text könnten auch groß und fett sein.
Dies schließt auch Änderungen der Notation bzw. die ``Suche und Ersetze''-Funktion mit ein. Wenn man in einem Datenbank-Lehrbuch den Buchstaben ``Sigma'' sowohl für Datenbank-Zustände als auch für die Selektion verwendet, und es stellt sich heraus, daß man Datenbank-Zustände umbenennen muß, kann das eine langwierige und fehleranfällige manuelle Aufgabe sein. Es wäre besser, man hätte die logischen Konzepte (Zustand bzw. Selektion) von der Darstellung (Sigma) unterschieden.
In dem XML Handbook wird als Beispiel die Suche nach einem Brief an Martha über ``John Smith's will'' genannt. Das Wort ``will'' ist sehr häufig in der englischen Sprache, aber hier meint es ``Testament''. Auch ist wichtig, daß Martha der Empfänger ist, und nicht einfach nur im Text vorkommt. Eine bloße Suche nach den Worten würde viele nicht-relevante Dokumente liefern.
Z.B. Darstellung im Web-Browser (mit/ohne Java, Grafiken, Frames), Drucken auf Papier (Seiten-Einteilung wichtig, besser ein größeres Dokument als viele kleine), automatisches Vorlesen für blinde Nutzer (oder Autofahrer), Kurzfassung für Handys (WAP).
Interaktive Lehrbücher: Textteile werden je nach Kenntnisstand des Lesers weggelassen (``adaptive Hypermedia'', [http://www2.sis.pitt.edu/~peterb/], [http://wwwis.win.tue.nl/ah/], Projekt Wartungshandbücher für Flugzeuge). ``Document Processing''-Kurs in Pittsburgh: Tabelle mit Studenten-Information. Stylesheet druckt Email-Liste. Notizen, Anmerkungen, Versions-Information im Text selbst wird normalerweise nicht mit ausgegeben.
As programming legend Brian Kernighan once noted, the problem with ``What you see is what you get'' is that what you see is all you've got.'' [Bosak/Bray, "XML and the Second-Generation Web"]
Im XML Handbook wird inhaltsorientiertes/logisches Markup auch ``abstraktes Markup'' genannt, weil es die Details zum Ausdrucken nicht enthält.
Ein Text kann mehrere Stylesheets haben, z.B. zur Ausgabe auf unterschiedliche Medien oder zur Anpassung an unterschiedliche Benutzerwünsche.
Richard Stallman, Gründer der Free Software Foundation (GNU), beklagt, daß der Geist, daß alle Software frei ist und beliebig geteilt werden kann, zerstört wurde, als das SCRIBE System an eine Firma verkauft wurde. Vorher wurden Programme mehr als Kunstwerke angesehen, und Programmieren war im wesentlichen Spaß, und nicht ein Mittel, um reich zu werden. Programme wurden kostenlos im Quellcode ausgetauscht, und jeder war eingeladen, sie anzupassen und zu verbessern. Als die Leute aber verstanden, daß sie damit viel Geld verdienen können, wenn sie ihre Ideen nicht mehr teilen, wurde diese Kultur zerstört.
Die LaTeX-Befehle sollen sehr direkt vom SCRIBE-System inspiriert sein.
Natürlich kann man Markierungen definieren, die physisches Markup darstellen sollen (z.B. <Kursiv>), aber diese Bedeutung/Interpretation kann in XML nicht spezifiziert werden (dafür gibt es XSL, die ``Extensible Stylesheet Language''). XML selbst ist nur ein Grammatik-Formalismus, mit dem man formale Sprachen, also Datenformate definieren kann. Solange man XML nur zum Datenaustausch zwischen Programmen verwendet, ist es auch gar nicht nötig, spezielle Schriftsatzangaben zum Ausdrucken zu machen. Um es nocheinmal klar zu sagen: XML ist keine Programmiersprache wie C oder Java. XML ist ein Datenformat. Man kann die Syntax der Daten in einem Teil von XML spezifizieren (als ``Document Type Definition'' oder DTD) und die Daten selbst dann in der so spezifizierten Teilmenge von XML aufschreiben. Die Bedeutung der Daten kann man nicht in XML festlegen. XML selbst ``tut'' überhaupt nichts.
XSLT kann aber z.B. auch zur Übersetzung in HTML verwendet werden (dies ist im Moment die häufigste Art, XML in Web darzustellen). Man kann mit XSLT sogar eine Übersetzung nach LaTeX durchführen.
Die Lizenz-Gebühr für das Programm ist wie eine Miete für die Informationen, die man doch selbst besitzen sollte. Datenformate von Programmen werden häufig geändert, zum Beispiel soll es heute sehr schwer sein, noch Dateien für WordPerfect 3.1 für DOS zu lesen, daß vor etwa 10 Jahren aktuell war. Auch Microsofts RTF-Format wurde verschiedentlich geändert. Man muß also wie bei einer Miete regelmäßig für Updates bezahlen. Der SGML-Standard ist dagegen nach 1986 nur wenig geändert worden und immer noch aktuell. XML ist eine vereinfachte Version von SGML, und die Konvertierung ist recht einfach. Es ist auch nicht ganz unwahrscheinlich, daß viele XML-Werkzeuge mit der Zeit auch das volle SGML verstehen werden.
XML basiert auf dem Unicode Standard zur Codierung internationaler Schriftzeichen. XML schreibt vor, daß Zeilenenden der Anwendung als einzelnes Linefeed übergeben werden (auch unter MS-DOS und auf Macs). XML Werkzeuge gibt es für viele unterschiedliche Betriebssysteme (viele sind heute in Java geschrieben).
XML kann relativ einfach in verschiedene Ausgabeformate für Drucker, das Web, CD-ROMs, etc. übersetzt werden. Vor 10 Jahren gab es noch kein Web, aber in SGML codierte Texte konnten wesentlich einfacher ins Web gestellt werden als etwa Word-Dateien.
Man kann SGML/XML-codierte Texte recht einfach in Formate für verschiedene Anwendungsprogramme übersetzen, und die Texte auch für andere Zwecke verwenden als nur zum Ausdrucken. Word-Dateien kann man dagegen nur mit Word verwenden. Unabhängigkeit geschieht häufig durch eine gewisse Indirektion. Zum Beispiel wird bei Datenbanken die physische Datenunabhängigkeit durch die Trennung von konzeptionellem und internem Schema erreicht. So ist auch verständlich, daß bei XML die Konvertierung in andere Formate relativ wichtig ist.
Ein Student von mir hatte eine Datenbank als SQL Server Version 6 Datei bekommen, und konnte sie nicht in SQL Server Version 7 laden. Das Oracle Export/Import-Format ist Oracle-spezifisch, und kann nur zum Datenaustausch zwischen Oracle Datenbanken eingesetzt werden. Personal Oracle kommt mit einem Konvertierungsprogramm, das den Import von Daten in Microsoft Access Datenbanken erlaubt, aber die umgekehrte Konvertierung wird von Oracle natürlich nicht unterstützt.
Mit einem Standard-Austauschformat benötigt man für n verschiedene interne Formate nur 2*n Konvertierungsprogramme. Ansonsten benötigt man n*(n-1) Programme, um von jedem Format direkt in jedes andere konvertieren zu können.
Es gibt zur Zeit viele Bestrebungen, ``Document Type Definitions'' (oder ``Schemas'') für verschiedene Anwendungsbereiche zu entwickeln und zu standardisieren. Es gibt schon einige DTD-Sammlungen im Web: [http://www.dtd.com/], [http://www.xmltree.com], [http://www.biztalk.org], [http://xml.org] Auch für Datenbank-Entwurf interessant: DTDs sind Datenbank-Schemata.
Die Unternehmen werden ihre Daten wahrscheinlich weiter in relationalen Datenbanken halten, und nicht auf spezielle XML-Datenbanken umsteigen, die zur Zeit in Entwicklung sind. Aber der Datenaustausch zwischen Unternehmen, also ``Business-to-Business (B2B) E-Commerce'' wird in XML abgewickelt werden.
Wenn man z.B. ein Programm für Multiple-Choice Tests entwickelt, muß man sich darüber Gedanken machen, wie man die Fragen und möglichen Antworten abspeichern will. Ich habe früher viele Textadventurespiele gespielt, und wollte natürlich auch selbst eines schreiben. Dafür ist auch das wesentliche die Datensammlung mit den Beschreibungen der Orte oder Räume und der Gegenstände, sowie auch den Regeln, was bei einem Kommando geschieht.
Natürlich kann man alle solche Daten auch in einer relationalen Datenbank abspeichern. An dem BibTeX Beispiel kann ich aber sagen, daß für mich die Verwendung eines Texteditors viel leichter war, als spezielle Bildschirmmasken für eine relationale Datenbank, die wir auch hatten. Das würde sich wahrscheinlich ändern, wenn meine Literatursammlung wesentlich größer wäre.
Wie soll z.B. <CENTER> in einer Sprachausgabe dargestellt werden? Und wie soll <BLINK> ausgedruckt werden?
Dies kann natürlich nicht Inhalts-orientiertes Markup für beliebige Anwendungen erlauben. Die möglichen Anwendungen sind einfach zu verschieden. HTML hat einige inhaltliche Tags wie etwa <ADDRESS>, <TITLE> und <KBD>, auch die verschiedenen Überschriften, Paragraphen usw. können so verstanden werden. Aber Dinge wie <PRODUCT> und <PRICE>, die im heutigen Web durchaus häufiger vorkommen, fehlen. Es ist einfach nicht möglich, mit einem festen Satz von Tags beliebige Anwendungen zu unterstützen. Man gelangt dann zu einem kleinsten-gemeinsamen Nenner von Tags (z.B. sollte jedes Dokument einen Titel haben). Die einzige gemeinsame Funktion aller Arten von Dokumenten ist das Ausdrucken, daher führt der feste Satz von Tags auch zu stärker darstellungs-orientiertem Markup.
Je mehr man über die Struktur weiß, umso komplexere Anfragen sind möglich. Wenn ein Dokument nur eine Folge von Zeichen ist, kann man nur nach Teilstrings suchen. Relationale Datenbanken sind stark strukturiert, und entsprechend ist SQL auch eine viel mächtigere Sprache.
Die Weiterverarbeitung (etwa mit Stylesheets) wird komplex und unzuverlässig, wenn man nicht voraussetzen kann, daß sich die Eingabe an die Syntaxregeln hält.Eine frühe Version von Netscape soll, falls ein Dokument zwei <TITLE>-Elemente enthielt, diese im Wechsel blinkend angezeigt haben. Der Erfolg war, daß Programmierer dieses Verhalten ausnutzten, um einen solchen Effekt zu erzielen.
Vorher war es offenbar so, daß die Syntaxanalyse in die speziellen Verarbeitungsprogramme für gegebene Dokument-Typen eingebaut war. Goldfarb sagt im XML Handbook ``At that point SGML was born - although it still had a lot of growing up to do.''
Später hat das Komitee auch die Standards HyTime (``Hypermedia/Time-based Structuring Language'') für Hyperlinks und DSSSL (``Document Style Semantics and Specification Language'') für Stylesheets entwickelt.
Das US Department of Defense startete 1985 eine Serie von Standards, die ein auf SGML basierendes Format für technische Dokumentation verlangen (CALS: ``Computer-Aided Logistic Support'', ``Continuous Acquisition and Life-cycle Support'').
Sein Kollege Anders Berglund hat ihn auf SGML hingewiesen, aber sie entwickelten die Hypertext Markup Language (HTML) zunächst nur anhand von Beispielen. Als schließlich eine formale DTD für HTML definiert wurde, gab es schon Tausende von inkorrekten HTML-Dokumenten. DTD für HTML 4.01: [http://www.w3.org/TR/REC-html40/sgml/dtd.html] [http://www.w3.org/TR/REC-html40/strict.dtd] DTD für HTML 3.2: [http://www.w3.org/TR/REC-html32#dtd] Syntaxprüfer für HTML: [http://validator.w3.org/].
Durch solche Erweiterungen sollten die Anwender an einen bestimmten Browser gebunden werden.
Momentan müssen z.B. Preisvergleichs-Dienste kleine Programme für jede Datenquelle im Web schreiben (sogenannte ``Wrapper''), die die relevanten Daten aus den Web-Seiten extrahieren. Das Problem ist, daß für jede Datenquelle ein eigenes Programm erforderlich ist, und dieses Programm nur so lange funktioniert, wie das Format der Web-Seite nicht geändert wird. Viele Firmen ``verbessern'' ihre Repräsentation im Web aber relativ häufig.
Während XML 1.0 heute stabil ist, sind viele der darauf aufbauenden Standards, z.B. für Stylesheets, noch in Entwicklung. Bücher, die 1998 or 1999 erschienen sind, weisen darauf hin, daß ihre Darstellung von XSL nur auf Vor-Informationen basiert, und die entgültige XSL Norm sich davon recht deutlich unterscheiden kann. Der Implementierung von XSLT im Internet Explorer 5 merkt man manchmal auch an, daß sie sich noch auf einen Vorentwurf bezieht (und mit der schließlich endgültig verabschiedeten XSLT-Spezifikation nicht genau übereinstimmt).
Zum Beispiel benutzt man in HTML häufig <BR> und <LI> ohne schließendes Tag. Während SGML noch häufig mit normalen ASCII-Editoren erstellt wurde, wird XML typischerweise von Programmen oder speziellen XML-Editoren erstellt. Da ist die Einsparung von Tastendrücken nicht mehr wichtig. Auch spielen einige Bytes mehr Speicherplatz keine Rolle mehr. Tags sind unter anderem auch deswegen nicht optional, weil XML eine DTD (Grammatik) nicht zwingend erfordert. Dann kann man natürlich nicht mehr die korrekte Verwendung einer gegebenen Menge von Tags prüfen, aber die Baumstruktur (korrekte Schachtelung der Tags) kann immerhin noch erzwungen werden (Wohlgeformtheit). Ohne Grammatik wären Tags aber nicht eindeutig rekonstruierbar.
Dies ist aber in SGML mit einigen Klimmzügen erreichbar (SGML hat viele Parameter), siehe [http://www.w3.org/TR/NOTE-sgml-xml-971215]. Auch erlauben heutige HTML-Browser und Syntaxchecker diese Schreibweise. Sie ist also offenbar nicht wirklich neu, sondern wurde in HTML nur kaum verwendet.
© Stefan Brass (sbrass@sis.pitt.edu), 28. August 2000
Original URL: http://www.informatik.uni-giessen.de/staff/brass/xml00/c1_intro.xml