<?xml version="1.0"?>

<!-- ==========================================================================
 Purpose:     Notes for XML Course, August 2000, University of Giessen
 Author:      Stefan Brass
 Email:       sbrass@sis.pitt.edu
 Last Change: August 28, 2000
 Module:      c1_intro.xml
 Purpose:     Chapter 1: Introduction
=========================================================================== -->

<!DOCTYPE COURSENOTES SYSTEM "notes.dtd">

<?xml-stylesheet type="text/xsl" href="notes_ie.xsl"?>

<COURSENOTES DATE='28. August 2000' FILE='c1_intro.xml'>

<CHAPTER NO='1'>
<TITLE>Einleitung</TITLE>

<SECTION>
<H>Was ist XML?</H>

<LIST>
<I>XML steht f<ue/>r eXtensible Markup Language.</I>
<I>XML ist ein Formalismus,
der die Definition HTML-<ae/>hnlicher Markup-Sprachen
bzw.<n/>Daten-Formate erlaubt.</I>
<I>Z.B.<n/>wird damit m<oe/>glich:
	<CODE>
	<L><BEG>EMAIL</BEG></L>
	<L><T/><BEG>FROM</BEG>sbrass@sis.pitt.edu<END>FROM</END></L>
	<L><T/><BEG>TO</BEG>brass@informatik.uni-giessen.de<END>TO</END></L>
	<L><T/><BEG>DATE</BEG>200006201440<END>DATE</END></L>
	<L><T/><BEG>SUBJECT</BEG>Test<END>SUBJECT</END></L>
	<L><T/><BEG>CONTENTS</BEG>Funktioniert meine neue</L>
	<L><T/><T/>Email Adresse schon?<END>CONTENTS</END></L>
	<L><END>EMAIL</END></L>
	</CODE></I>
<I>XML ist eine vereinfachte Fassung von SGML
	(Standard Generalized Markup Language).</I>
<I>XML ist ein neues Datenmodell,
das in Konkurrenz zum relationalen Datenmodell treten wird.
	<NOTE>Es hat gewisse <AE/>hnlichkeiten zum veralteten
	hierarchischen Modell.
	Auf der anderen Seite ist es ein semistrukturiert Datenmodel
	(und damit sehr modern):
	Schw<ae/>cher strukturiert als relationale Datenbanken,
	st<ae/>rker als reiner Text
	(z.B.<n/>Attribute k<oe/>nnen fehlen oder mehrere Werte haben,
	manchmal eine geschachtelte Struktur aufweisen,
	und manchmal nur Text enthalten).</NOTE></I>
<I>Mit XML kann die Verarbeitung von Daten (in Sinne von Datenbanken)
	und Dokumenten integriert werden.
	<NOTE>Es wird gesagt,
	da<ss/> noch immer der weit gr<oe/><ss/>ere Teil
	der f<ue/>r Unternehmen relevanten
	Informationen nicht in Datenbanken gespeichert ist,
	sondern in Dokumenten steht
	(und in den K<oe/>pfen der Mitarbeiter).</NOTE></I>
<I>XML ist die Grundlage des zuk<ue/>nftigen ``semantischen Web''.</I>
<I>XML ist ein universelles Datenaustausch-Format.</I>
</LIST>
</SECTION>

<SECTION>
<H>Markup-Sprachen</H>
<LIST>
<I>Fr<ue/>her wurde ein Manuskript mit der Schreibmaschine getippt,
	aber dann f<ue/>r den Setzer mit handschriftlichen Markierungen
	versehen.
	Z.B.<n/>wurde etwas unterstrichen oder eingekreist und dann am Rand
	``kursiv'' vermerkt.</I>
<I>Sp<ae/>ter wurden solche handschriftlichen Markierungen von Textteilen
	durch entsprechende Kommandos f<ue/>r Programme ersetzt,
	etwa {\it ...} f<ue/>r TeX/LaTeX.</I>
<I>Mit leuchtend-gelben ``Textmarkern'' werden h<ae/>ufig besonders wichtige
	Textteile hervorgehoben.
	Markierungen in Texten dienen also nicht nur der Formatierung
	beim Drucken.
	<NOTE>Tats<ae/>chlich verwenden manche Studenten
	sogar verschiedene Farben
	mit verschiedenen Bedeutungen.</NOTE></I>
<I>Charles Goldfarb, der Vater von SGML, sagt,
	er h<ae/>tte den Begriff ``Markup Language'' 1969 erfunden,
	damit die Abk<ue/>rzung GML (``Generalized Markup Language'')
	zu den Erfindern Goldfarb, Mosher und Lorie passt.
	<NOTE>Dieser Vorl<ae/>ufer von SGML ist in einem Projekt bei IBM
	entstanden,
	in dem ein System zur Verwaltung von juristischen Dokumenten
	entwickelt wurde.</NOTE></I>
</LIST>
</SECTION>

<SECTION>
<H>Darstellungs-orientiertes und inhaltliches Markup</H>
<LIST>
<I>Zun<ae/>chst war die Markierungen in den Texten nur Anweisungen f<ue/>r
	den Schriftsatz, z.B.<n/>18pt-Schrift, kursiv, Einr<ue/>ckung.</I>
<I>Dies ist vern<ue/>nftig,
	solange die einzige Verwendung des Textes das Ausdrucken
	in genau diesem Format ist.
	Wenn man den Text aber auch auf andere Weisen verarbeiten m<oe/>chte,
	reicht dies nicht mehr aus.
	<NOTE>Zum Beispiel k<oe/>nnte man Kursiv-Schrift f<ue/>r Hervorhebungen
	verwenden,
	aber auch f<ue/>r definierende Vorkommen von Begriffen,
	und f<ue/>r Namen.
	F<ue/>r eine Rechtschreib-Pr<ue/>fung ist es nun wichtig,
	da<ss/> das Programm Namen erkennt.
	F<ue/>r die Erstellung eines Glossars oder Indexes m<ue/>ssen
	m<ue/>ssen die Definitionen erkannt werden.
	F<ue/>r einen Menschen ist es nicht schwierig,
	diese verschiedenen Verwendungen kursiver Schrift zu unterscheiden,
	aber Computer sind dumm
	und brauchen explizite Markierungen.
	Indem f<ue/>r inhaltlich verschiedene Dinge
	die gleiche Markierung verwendet wurde,
	ist es zu einem Informationsverlust gekommen.</NOTE></I>
<I>Texte werden heute also nicht nur zum Ausdrucken verwendet,
	sondern es sind auch andere Verarbeitungen m<oe/>glich.
	<NOTE>Zum Beispiel erfordert auch das automatische Erstellen
	eines Inhaltsverzeichnisses,
	da<ss/> Kapitel<ue/>berschriften klar als solche gekennzeichnet sind,
	und nicht einfach nur als gro<ss/> und fett.
	Besondere Warnungen im Text k<oe/>nnten auch gro<ss/> und fett
	sein.</NOTE></I>
<I>Man mu<ss/> sich bei der Erstellung des Textes Gedanken
	<ue/>ber m<oe/>gliche Verwendungen machen.
	Alle Textbestandteile, die man gesondert behandeln will,
	m<ue/>ssen bei der Erfassung entsprechend markiert werden.
	Die Verwendung des XML-Formates alleine ist noch kein Zaubermittel.
	<NOTE>Dies schlie<ss/>t auch <AE/>nderungen der Notation
	bzw.<n/>die ``Suche und Ersetze''-Funktion mit ein.
	Wenn man in einem Datenbank-Lehrbuch den Buchstaben ``Sigma''
	sowohl f<ue/>r Datenbank-Zust<ae/>nde
	als auch f<ue/>r die Selektion verwendet,
	und es stellt sich heraus,
	da<ss/> man Datenbank-Zust<ae/>nde umbenennen mu<ss/>,
	kann das eine langwierige und fehleranf<ae/>llige
	manuelle Aufgabe sein.
	Es w<ae/>re besser,
	man h<ae/>tte die logischen Konzepte (Zustand bzw.<n/>Selektion)
	von der Darstellung (Sigma) unterschieden.</NOTE></I>
<I>Das Suchen in Texten ist auch eine Funktion,
	die durch entsprechende Markierungen sehr erleichtert werden kann.
	<NOTE>In dem XML Handbook wird als Beispiel die Suche nach einem Brief
	an Martha <ue/>ber ``John Smith's will'' genannt.
	Das Wort ``will'' ist sehr h<ae/>ufig in der englischen Sprache,
	aber hier meint es ``Testament''.
	Auch ist wichtig,
	da<ss/> Martha der Empf<ae/>nger ist,
	und nicht einfach nur im Text vorkommt.
	Eine blo<ss/>e Suche nach den Worten w<ue/>rde viele nicht-relevante
	Dokumente liefern.</NOTE></I>
<I>Auch mu<ss/> man Texte heute h<ae/>ufig auf verschiedenen Medien ausgeben,
	was unterschiedliche Formatierungen des gleichen Textes erfordert.
	<NOTE>Z.B.<n/>Darstellung im Web-Browser
	(mit/ohne Java, Grafiken, Frames),
	Drucken auf Papier
	(Seiten-Einteilung wichtig, besser ein gr<oe/><ss/>eres Dokument
		als viele kleine),
	automatisches Vorlesen f<ue/>r blinde Nutzer (oder Autofahrer),
	Kurzfassung f<ue/>r Handys (WAP).</NOTE></I>
<I>Manchmal m<oe/>chte man auch nur Ausz<ue/>ge eines Dokumentes ausgeben,
	nicht den ganzen Text.
	<NOTE>Interaktive Lehrb<ue/>cher:
	Textteile werden je nach Kenntnisstand des Lesers weggelassen
	(``adaptive Hypermedia'',
	<URL>http://www2.sis.pitt.edu/<SNAKE/>peterb/</URL>,
	<URL>http://wwwis.win.tue.nl/ah/</URL>,
	Projekt Wartungshandb<ue/>cher f<ue/>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.</NOTE></I>
<I>WYSIWYG (``what you see is what you get''):
	``What you see is all you've got.''
	<NOTE>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"]</NOTE></I>
<I>``Write once, use everywhere.''</I>
</LIST>
</SECTION>

<SECTION>
<H>Stylesheets</H>
<LIST>
<I>Daher sollten die Anweisungen zum Ausgabeformat vom eigentlichen Text
	getrennt werden.
	<NOTE>Im XML Handbook wird inhaltsorientiertes/logisches Markup auch
	``abstraktes Markup'' genannt,
	weil es die Details zum Ausdrucken nicht enth<ae/>lt.</NOTE></I>
<I>Das Ausgabeformat wird in sogenannten Stylesheets festgelegt.
	<NOTE>Ein Text kann mehrere Stylesheets haben,
	z.B.<n/>zur Ausgabe auf unterschiedliche Medien
	oder zur Anpassung an unterschiedliche Benutzerw<ue/>nsche.</NOTE></I>
<I>Zu Anfang waren Stylesheets einfach Makro-Definitionen,
	zum Beispiel wurde das Kommando ``Kapitel<ue/>berschrift'' im Text
	durch Kommandos f<ue/>r ``18<n/>Punkt'' und ``Fett'' ersetzt.</I>
<I>Die Trennung von logischem und physischem Markup soll erstmals im
	SCRIBE-System realisiert worden sein,
	das an der Carnegie-Mellon-University (CMU) in Pittsburgh entwickelt
	wurde.
	<NOTE>Richard Stallman, Gr<ue/>nder der Free Software Foundation (GNU),
	beklagt, da<ss/> der Geist, da<ss/> alle Software frei ist und beliebig
	geteilt werden kann, zerst<oe/>rt wurde, als das SCRIBE System an eine
	Firma verkauft wurde.
	Vorher wurden Programme mehr als Kunstwerke angesehen,
	und Programmieren war im wesentlichen Spa<ss/>,
	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<ss/> sie damit viel Geld verdienen k<oe/>nnen,
	wenn sie ihre Ideen nicht mehr teilen,
	wurde diese Kultur zerst<oe/>rt.</NOTE>
	<NOTE>Die LaTeX-Befehle sollen sehr direkt vom SCRIBE-System inspiriert
	sein.</NOTE></I>
<I>XML selbst macht keinerlei Angaben dar<ue/>ber,
	wie der Text dargestellt werden soll.
	``XML specifies Syntax, not Semantics''.
	<NOTE>Nat<ue/>rlich kann man Markierungen definieren,
	die physisches Markup darstellen sollen (z.B.<n/>&lt;Kursiv&gt;),
	aber diese Bedeutung/Interpretation kann in XML nicht spezifiziert
	werden (daf<ue/>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<oe/>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'' <ue/>berhaupt nichts.</NOTE></I>
<I>XSL besteht aus zwei Teilen:
	<ENUMERATE>
	<I>Einem Formalismus f<ue/>r rekursive Regeln zur <UE/>bersetzung
	von XML mit einem Satz von Markierungen
	in XML mit einem anderen Satz von Markierungen
	(XSLT: XSL Transformations).</I>
	<I>Einem Satz von Markierungen f<ue/>r physisches Markup
	(Formatting Objects).</I>
	</ENUMERATE>
	<NOTE>XSLT kann aber z.B.<n/>auch zur <UE/>bersetzung
	in HTML verwendet werden
	(dies ist im Moment die h<ae/>ufigste Art,
	XML in Web darzustellen).
	Man kann mit XSLT sogar eine <UE/>bersetzung
	nach LaTeX durchf<ue/>hren.</NOTE></I>
<I>In der englischen Literatur wird das Formatieren eines Textes
	zum Ausdrucken ``Rendering'' genannt
	(<ue/>bersetzen, interpretieren).</I>
</LIST>
</SECTION>

<SECTION>
<H>Energie-Metapher</H>
<LIST>
<I>Im Buch ``ABCD...SGML'' von Liora Alschuler werden verschiedene Formate,
	in denen textuelle Information vorliegen kann,
	mit verschiedenen Energieebenen verglichen.</I>
<I>Aufw<ae/>rtskonvertierung ist m<ue/>hsam
	und erfordert den Einsatz von Energie,
	Abw<ae/>rtskonvertierung ist einfach
	(es wird allerdings nicht richtig Energie frei).</I>
<I>Ganz unten steht eine Hardcopy (ein Ausdruck),
	gefolgt von der Darstellung als Bitmap-Grafik.</I>
<I>Als n<ae/>chstes kommt die Darstellung als reiner ASCII-Text
	ohne Formatieranweisungen.
	Vom ASCII-Text zur Hardcopy ist einfach,
	aber vom Ausdruck zum ASCII-Text ist schon nicht trivial.</I>
<I>Dann folgen Textverarbeitungssysteme wie Word.
	Wieder ist es einfach, zum ASCII-Text zu kommen,
	aber in der umgekehrten Richtung mu<ss/> man m<ue/>hsam von Hand
	Formatierungen einf<ue/>gen.</I>
<I>Ganz oben steht in diesem Diagramm SGML und strukturierte Information.
	Von SGML bzw.<n/>XML kann man leicht zu Text
	mit Formatierungsanweisungen kommen,
	aber dabei geht Information verloren,
	die man in der umgekehrten Richtung m<ue/>hsam rekonstruieren
	mu<ss/>.</I>
</LIST>
</SECTION>


<SECTION>
<H>``Unabh<ae/>ngigkeitserkl<ae/>rung des Informations-Anbieters''</H>
<LIST>
<I>Ein anderer Gedanke aus dem Buch ``ABCD...SGML'' ist,
	da<ss/> SGML den Autor in verschiedener Hinsicht
	unabh<ae/>ngig macht.</I>
<I>Unabh<ae/>ngig von einem speziellen Anbieter:
	SGML ist ein ISO-Standard (seit 1986) und es gibt SGML-Werkzeuge von
	einer ganzen Reihe verschiedener Hersteller.
	Bei XML gibt es auch schon eine gr<oe/><ss/>ere Anzahl
	freier Programme.
	``Wer das Format besitzt, besitzt die Informationen.''
	<NOTE>Die Lizenz-Geb<ue/>hr f<ue/>r das Programm
	ist wie eine Miete f<ue/>r die Informationen,
	die man doch selbst besitzen sollte.
	Datenformate von Programmen werden h<ae/>ufig ge<ae/>ndert,
	zum Beispiel soll es heute sehr schwer sein,
	noch Dateien f<ue/>r WordPerfect<n/>3.1 f<ue/>r DOS zu lesen,
	da<ss/> vor etwa 10<n/>Jahren aktuell war.
	Auch Microsofts RTF-Format wurde verschiedentlich ge<ae/>ndert.
	Man mu<ss/> also wie bei einer Miete regelm<ae/><ss/>ig f<ue/>r Updates
	bezahlen.
	Der SGML-Standard ist dagegen nach 1986
	nur wenig ge<ae/>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<ss/> viele XML-Werkzeuge mit der Zeit auch das volle SGML verstehen
	werden.</NOTE></I>
<I>Unabh<ae/>ngig von einem bestimmten Betriebssystem
	<NOTE>XML basiert auf dem Unicode Standard zur Codierung internationaler
	Schriftzeichen.
	XML schreibt vor,
	da<ss/> Zeilenenden der Anwendung als einzelnes Linefeed
	<ue/>bergeben werden
	(auch unter MS-DOS und auf Macs).
	XML Werkzeuge gibt es f<ue/>r viele unterschiedliche Betriebssysteme
	(viele sind heute in Java geschrieben).</NOTE></I>
<I>Unabh<ae/>ngigkeit von dem Ausgabemedium
	<NOTE>XML kann relativ einfach in verschiedene Ausgabeformate
	f<ue/>r Drucker,
	das Web, CD-ROMs, etc. <ue/>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.</NOTE></I>
<I>Unabh<ae/>ngig von dem Anwendungsprogramm
	<NOTE>Man kann SGML/XML-codierte Texte recht einfach in Formate f<ue/>r
	verschiedene Anwendungsprogramme <ue/>bersetzen,
	und die Texte auch f<ue/>r andere Zwecke verwenden
	als nur zum Ausdrucken.
	Word-Dateien kann man dagegen nur mit Word verwenden.
	Unabh<ae/>ngigkeit geschieht h<ae/>ufig durch eine gewisse Indirektion.
	Zum Beispiel wird bei Datenbanken die physische Datenunabh<ae/>ngigkeit
	durch die Trennung von konzeptionellem und internem Schema erreicht.
	So ist auch verst<ae/>ndlich,
	da<ss/> bei XML die Konvertierung in andere Formate
	relativ wichtig ist.</NOTE></I>
</LIST>
</SECTION>

<SECTION>
<H>XML als universelles Daten-Austauschformat</H>
<LIST>
<I>F<ue/>r relationale Datenbanken gibt es bisher kein allgemein akzeptiertes
	Austausch-Format.
	<NOTE>Ein Student von mir hatte eine Datenbank
	als SQL Server Version<n/>6 Datei bekommen,
	und konnte sie nicht in SQL Server Version<n/>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<ue/>rlich nicht
	unterst<ue/>tzt.</NOTE></I>
<I>Microsoft Word kommt mit einer Unmenge von Konvertierungsprogrammen
	f<ue/>r die Formate anderer Textverarbeitungs-Programme.</I>
<I>Es w<ae/>re viel einfacher,
	wenn jedes Programm den Export und Import von Daten
	im XML-Format unterst<ue/>tzen w<ue/>rde.
	<NOTE>Mit einem Standard-Austauschformat
	ben<oe/>tigt man f<ue/>r <M>n</M><n/>verschiedene interne Formate nur
	<M>2*n</M><n/>Konvertierungsprogramme.
	Ansonsten ben<oe/>tigt man <M>n*(n-1)</M><n/>Programme,
	um von jedem Format direkt in jedes andere konvertieren
	zu k<oe/>nnen.</NOTE></I>
<I>Zwar ist XML alleine schon eine Hilfe
	(weil es viele XML-zu-XML Transformations-Programme gibt,
	z.B.<n/>XSLT-Implementierungen),
	aber ein vollst<ae/>ndige L<oe/>sung erfordert
	auch die Normung der ``Tags''.
	<NOTE>Es gibt zur Zeit viele Bestrebungen,
	``Document Type Definitions'' (oder ``Schemas'')
	f<ue/>r verschiedene Anwendungsbereiche
	zu entwickeln und zu standardisieren.
	Es gibt schon einige DTD-Sammlungen im Web:
	<URL>http://www.dtd.com/</URL>,
	<URL>http://www.xmltree.com</URL>,
	<URL>http://www.biztalk.org</URL>,
	<URL>http://xml.org</URL>
	Auch f<ue/>r Datenbank-Entwurf interessant:
	DTDs sind Datenbank-Schemata.</NOTE></I>
<I>Auch fr<ue/>her haben gro<ss/>e Unternehmen Daten
	schon elektronisch ausgetauscht.
	Solche EDI-Systeme (``Electronic Data Interchange'')
	waren allerdings sehr teuer
	und damit f<ue/>r kleine bis mittlere Unternehmen nicht geeignet.
	Mit XML reicht im Extremfall ein Web-Browser und ein Texteditor aus,
	um an einem solchen Datenaustausch teilnehmen zu k<oe/>nnen.</I>
<I>Es wird h<ae/>ufig gesagt,
	da<ss/> die Hauptbedeutung von XML im Datenaustausch liegt.
	<NOTE>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.</NOTE></I>
</LIST>
</SECTION>

<SECTION>
<H>XML als Syntax-Analyse-Werkzeug</H>
<LIST>
<I>Bei der Programmierung mu<ss/> man h<ae/>ufig kleine Sprachen entwerfen
	und implementieren.
	<NOTE>Wenn man z.B.<n/>ein Programm f<ue/>r Multiple-Choice Tests
	entwickelt,
	mu<ss/> man sich dar<ue/>ber Gedanken machen,
	wie man die Fragen und m<oe/>glichen Antworten abspeichern will.
	Ich habe fr<ue/>her viele Textadventurespiele gespielt,
	und wollte nat<ue/>rlich auch selbst eines schreiben.
	Daf<ue/>r ist auch das wesentliche die Datensammlung
	mit den Beschreibungen der Orte oder R<ae/>ume und der Gegenst<ae/>nde,
	sowie auch den Regeln,
	was bei einem Kommando geschieht.</NOTE></I>
<I>BibTeX ist ein Programm,
	das zur Verwaltung von Literatursammlungen dient,
	und hat auch sein eigenes Format f<ue/>r die Daten.
	<NOTE>Nat<ue/>rlich kann man alle solche Daten
	auch in einer relationalen Datenbank abspeichern.
	An dem BibTeX Beispiel kann ich aber sagen,
	da<ss/> f<ue/>r mich die Verwendung eines Texteditors
	viel leichter war,
	als spezielle Bildschirmmasken f<ue/>r eine relationale Datenbank,
	die wir auch hatten.
	Das w<ue/>rde sich wahrscheinlich <ae/>ndern,
	wenn meine Literatursammlung
	wesentlich gr<oe/><ss/>er w<ae/>re.</NOTE></I>
<I>Man kann bei solchen Gelegenheiten immer sein eigenes
	Datenformat definieren.
	Aber wenn man es als Anwendung von XML auslegt,
	hat man gleich Zugriff auf eine gro<ss/>e Anzahl von XML-Werkzeugen,
	wie etwa Parser (zur Syntaxanalyse),
	Syntax-gest<ue/>tzte Editoren,
	Abfrage- und Transformations-Werkzeuge,
	und nat<ue/>rlich Werkzeuge zur ansprechenden Darstellung der Daten
	auf verschiedenen Ausgabemedien,
	inklusive der Darstellung im Web.</I>
</LIST>
</SECTION>

<SECTION>
<H>Schw<ae/>chen/Probleme von HTML</H>
<LIST>
<I>HTML hat viele Bestandteile,
	die nur die Darstellung des Textes im Browser betreffen
	(etwa Schriftart-Angaben wie &lt;B&gt;),
	und relativ wenige Inhalts-orientierte ``Tags''.
	<NOTE>Wie soll z.B.<n/><TAG>CENTER</TAG>
	in einer Sprachausgabe dargestellt
	werden?
	Und wie soll <TAG>BLINK</TAG>
	ausgedruckt werden?</NOTE></I>
<I>HTML ist nur eine einzige Anwendung von SGML,
	d.h.<n/>ein fester Satz von ``Tags''.
	<NOTE>Dies kann nat<ue/>rlich nicht Inhalts-orientiertes Markup
	f<ue/>r beliebige Anwendungen erlauben.
	Die m<oe/>glichen Anwendungen sind einfach zu verschieden.
	HTML hat einige inhaltliche Tags wie etwa <TAG>ADDRESS</TAG>,
	<TAG>TITLE</TAG> und <TAG>KBD</TAG>,
	auch die verschiedenen <UE/>berschriften,
	Paragraphen usw.<n/>k<oe/>nnen so verstanden werden.
	Aber Dinge wie <TAG>PRODUCT</TAG> und <TAG>PRICE</TAG>,
	die im heutigen Web durchaus h<ae/>ufiger vorkommen,
	fehlen.
	Es ist einfach nicht m<oe/>glich,
	mit einem festen Satz von Tags beliebige Anwendungen
	zu unterst<ue/>tzen.
	Man gelangt dann zu einem kleinsten-gemeinsamen Nenner von Tags
	(z.B.<n/>sollte jedes Dokument einen Titel haben).
	Die einzige gemeinsame Funktion aller Arten von Dokumenten
	ist das Ausdrucken,
	daher f<ue/>hrt der feste Satz von Tags auch zu
	st<ae/>rker darstellungs-orientiertem Markup.</NOTE></I>
<I>HTML hat eine sehr lockere DTD (Grammatik),
	die nur wenig Struktur vorschreibt.
	Bekannte Struktur ist f<ue/>r die Weiterverarbeitung
	aber sehr n<ue/>tzlich.
	<NOTE>Je mehr man <ue/>ber die Struktur wei<ss/>,
	umso komplexere Anfragen sind m<oe/>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<ae/>chtigere Sprache.</NOTE></I>
<I>Aber selbst die wenigen Syntax-Regeln, die HTML vorschreibt,
	werden sehr h<ae/>ufig verletzt,
	und Browser zeigen den Text normalerweise dennoch
	ohne Fehlermeldung dar.
	<NOTE>Eine fr<ue/>he Version von Netscape soll, falls ein Dokument zwei
	<TAG>TITLE</TAG>-Elemente enthielt,
	diese im Wechsel blinkend angezeigt haben.
	Der Erfolg war,
	da<ss/> Programmierer dieses Verhalten ausnutzten,
	um einen solchen Effekt zu erzielen.</NOTE>
	Die Weiterverarbeitung (etwa mit Stylesheets) wird komplex
	und unzuverl<ae/>ssig,
	wenn man nicht voraussetzen kann,
	da<ss/> sich die Eingabe an die Syntaxregeln h<ae/>lt.</I>
</LIST>
</SECTION>

<SECTION>
<H>SGML, HTML, und XML (Historisches)</H>
<LIST>
<I>1969 entwickelten Goldfarb, Mosher und Lorie die Generalized Markup Language
	(GML) bei IBM
	(in einem Projekt zur Verwaltung juristischer Dokumente).</I>
<I>1974 entwickelte Goldfarb ein Programm zur Syntaxanalyse,
	das eine DTD (Document Type Definition, Grammatik) einliest
	und dann ein Dokument auf syntaktische Korrektheit bez<ue/>glich dieser
	DTD pr<ue/>ft.
	<NOTE>Vorher war es offenbar so,
	da<ss/> die Syntaxanalyse in die speziellen Verarbeitungsprogramme
	f<ue/>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.''</NOTE></I>
<I>1978-1986 war Goldfarb technischer Leiter eines Komitees,
	das den ISO-Standard 8879 f<ue/>r SGML entwickelte.
	<NOTE>Sp<ae/>ter hat das Komitee auch die Standards
	HyTime (``Hypermedia/Time-based Structuring Language'')
	f<ue/>r Hyperlinks
	und DSSSL (``Document Style Semantics and Specification Language'')
	f<ue/>r Stylesheets entwickelt.</NOTE></I>
<I>SGML wurde auch ein de facto Standard zum Austausch gro<ss/>er, komplexer
	Dokumente,
	z.B.<n/>Wartungsunterlagen f<ue/>r Flugzeuge
	oder Test-Unterlagen zur Zulassung neuer Medikamente.
	<NOTE>Das US Department of Defense startete 1985
	eine Serie von Standards,
	die ein auf SGML basierendes Format
	f<ue/>r technische Dokumentation verlangen
	(CALS: ``Computer-Aided Logistic Support'',
	``Continuous Acquisition and Life-cycle Support'').</NOTE></I>
<I>1989 hat Tim Berners-Lee beim CERN
	(einem europ<ae/>ischen Kernforschungslabor in Genf)
	ein Projekt vorgeschlagen,
	das die Grundlage des World Wide Web bildete.
	<NOTE>Sein Kollege Anders Berglund hat ihn auf SGML hingewiesen,
	aber sie entwickelten die Hypertext Markup Language (HTML)
	zun<ae/>chst nur anhand von Beispielen.
	Als schlie<ss/>lich eine formale DTD f<ue/>r HTML definiert wurde,
	gab es schon Tausende von inkorrekten HTML-Dokumenten.
	DTD f<ue/>r HTML<n/>4.01:
	<URL>http://www.w3.org/TR/REC-html40/sgml/dtd.html</URL>
	<URL>http://www.w3.org/TR/REC-html40/strict.dtd</URL>
	DTD f<ue/>r HTML<n/>3.2:
	<URL>http://www.w3.org/TR/REC-html32<HASH/>dtd</URL>
	Syntaxpr<ue/>fer f<ue/>r HTML:
	<URL>http://validator.w3.org/</URL>.</NOTE></I>
<I>Die erste HTML-Version hatte <ue/>berwiegend inhalts-orientierte Tags.
	Sp<ae/>ter wurden von den Browser-Herstellern
	mehr darstellungs-orientierte Tags hinzugef<ue/>gt.
	<NOTE>Durch solche Erweiterungen sollten die Anwender
	an einen bestimmten Browser gebunden werden.</NOTE></I>
<I>Als das Web erfolgreich war,
	und die Web-Seiten nicht nur in Browsern angezeigt wurden,
	sondern teils auch von Computer-Programmen verarbeitet wurden
	(z.B.<n/>Suchmaschinen oder Preisvergleichs-Diensten),
	kam der Wunsch auf,
	das ganze SGML zu verwenden,
	und nicht nur eine spezielle SGML-Anwendung.
	<NOTE>Momentan m<ue/>ssen z.B.<n/>Preisvergleichs-Dienste
	kleine Programme
	f<ue/>r jede Datenquelle im Web schreiben (sogenannte ``Wrapper''),
	die die relevanten Daten aus den Web-Seiten extrahieren.
	Das Problem ist,
	da<ss/> f<ue/>r jede Datenquelle ein eigenes Programm erforderlich ist,
	und dieses Programm nur so lange funktioniert,
	wie das Format der Web-Seite nicht ge<ae/>ndert wird.
	Viele Firmen ``verbessern'' ihre Repr<ae/>sentation im Web aber relativ
	h<ae/>ufig.</NOTE></I>
<I>Die Implementierung von SGML war den Browser-Herstellern
	aber zu kompliziert.
	Nach langen Verhandlungen einigte man sich auf eine
	(leicht modifizierte) SGML-Teilmenge,
	die XML (eXtensible Markup Language) genannt wurde.
	Die W3C Arbeitsgruppe zur Definition von XML wurde von
	Jon Bosak (SUN Microsystems) gegr<ue/>ndet und geleitet.</I>
<I>Am 10.<n/>Februar 1998 wurde die XML<n/>1.0 Empfehlung ver<oe/>ffentlicht:
	<URL>http://www.w3.org/TR/REC-xml</URL>
	<NOTE>W<ae/>hrend XML<n/>1.0 heute stabil ist,
	sind viele der darauf aufbauenden Standards,
	z.B.<n/>f<ue/>r Stylesheets, noch in Entwicklung.
	B<ue/>cher, die 1998 or 1999 erschienen sind,
	weisen darauf hin,
	da<ss/> ihre Darstellung von XSL nur auf Vor-Informationen basiert,
	und die entg<ue/>ltige XSL Norm sich davon recht deutlich
	unterscheiden kann.
	Der Implementierung von XSLT im Internet Explorer<n/>5
	merkt man manchmal auch an,
	da<ss/> sie sich noch auf einen Vorentwurf bezieht
	(und mit der schlie<ss/>lich endg<ue/>ltig verabschiedeten
	XSLT-Spezifikation nicht genau <ue/>bereinstimmt).</NOTE></I>
</LIST>
</SECTION>

<SECTION>
<H>Unterschiede von XML und HTML (Einschr<ae/>nkungen gegen<ue/>ber SGML)</H>
<LIST>
<I>XML erlaubt nicht, rekonstruierbare Tags wegzulassen.
	<NOTE>Zum Beispiel benutzt man in HTML h<ae/>ufig <TAG>BR</TAG>
	und <TAG>LI</TAG> ohne schlie<ss/>endes Tag.
	W<ae/>hrend SGML noch h<ae/>ufig mit normalen ASCII-Editoren
	erstellt wurde, wird XML typischerweise von Programmen oder
	speziellen XML-Editoren erstellt.
	Da ist die Einsparung von Tastendr<ue/>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<ue/>rlich nicht mehr die korrekte Verwendung
	einer gegebenen Menge von Tags pr<ue/>fen,
	aber die Baumstruktur (korrekte Schachtelung der Tags)
	kann immerhin noch erzwungen werden (Wohlgeformtheit).
	Ohne Grammatik w<ae/>ren Tags aber nicht
	eindeutig rekonstruierbar.</NOTE></I>
<I>Weil es f<ue/>r Tags ohne Inhalt etwas umst<ae/>ndlich w<ae/>re,
	immer erst das <oe/>ffnende Tag
	und dann das schlie<ss/>ende aufzuschreiben,
	wird hierf<ue/>r in XML normalerweise eine abgek<ue/>rzte Schreibweise
	verwendet,
	z.B. &lt;BR/&gt;.
	<NOTE>Dies ist aber in SGML mit einigen Klimmz<ue/>gen erreichbar
	(SGML hat viele Parameter),
	siehe <URL>http://www.w3.org/TR/NOTE-sgml-xml-971215</URL>.
	Auch erlauben heutige HTML-Browser und Syntaxchecker
	diese Schreibweise.
	Sie ist also offenbar nicht wirklich neu,
	sondern wurde in HTML nur kaum verwendet.</NOTE></I>
<I>XML unterscheidet zwischen Gro<ss/>- und Kleinschreibung in Tags
	(``case-sensitive'').</I>
<I>Attributwerte m<ue/>ssen in XML in Anf<ue/>hrungszeichen
	eingeschlossen werden.</I>
<I>W<ae/>hrend HTML im wesentlichen in SGML definiert werden kann
	(wobei f<ue/>r bestimmte Attributwerte wie URLs und Farbcodierungen
	noch zus<ae/>tzliche Einschr<ae/>nkungen gefordert werden m<ue/>ssen),
	gilt das aus diesen Gr<ue/>nden f<ue/>r XML nicht mehr.
	XHTML <URL>http://www.w3.org/TR/xhtml1/</URL>
	ist aber eine Variante von HTML,
	die in XML definiert werden kann.
	Unter anderem fordert XHTML,
	da<ss/> jedes ge<oe/>ffnete Tag auch wieder geschlossen wird.</I>
<I>SGML ist sehr stark parametrisierbar.
	Z.B.<n/>m<ue/>ssen Tags nicht unbedingt
	mit dem Zeichen<n/>``<ICODE>&lt;</ICODE>'' beginnen,
	sondern man kann das ``Start of Tag'' Zeichen selbst definieren.
	In XML wurden Werte f<ue/>r die meisten Parameter vorgeschrieben.</I>
</LIST>
</SECTION>

<SECTION>
<H>Auf XML basierende Standards (teils noch in Entwicklung)</H>
<LIST>
<I>Namespaces <URL>http://www.w3.org/TR/REC-xml-names/</URL></I>
<I>DOM <URL>http://www.w3.org/TR/REC-DOM-Level-1/</URL></I>
<I>XPath <URL>http://www.w3.org/TR/xpath</URL></I>
<I>XSLT <URL>http://www.w3.org/TR/xslt</URL></I>
<I>XSL: Formatting Objects <URL>http://www.w3.org/TR/xsl/</URL></I>
<I>XPointer <URL>http://www.w3.org/TR/xptr</URL></I>
<I>XLink <URL>http://www.w3.org/TR/xlink/</URL></I>
<I>XML Query <URL>http://www.w3.org/XML/Query</URL></I>
<I>XML Schema <URL>http://www.w3.org/XML/Schema</URL></I>
<I>XHTML <URL>http://www.w3.org/TR/xhtml1/</URL></I>
</LIST>
</SECTION>

</CHAPTER>

</COURSENOTES>

