Personen | Lehre | Lehrstuhl | Forschung | Suche | ||||||
|
|
|
WS1999 | SS2000 | WS2000 | SS2001 |
|
|||||||||||||||||
Proseminar Datenmodellierung
|
<mrow> | Mit diesem Tag kann man mehrere Elemente gruppieren. Diese Elemente werden alle nebeneinander dargestellt (also in einer Zeile) |
<msup> | Mit diesem Tag kann man ein Zeichen höherstellen (superscript), wichtig für Potenzen. Dieses Tag hat immer zwei Unterelemnte, s. Beispiel |
<mi> | Innerhalb dieses Tags stehen Bezeichner (identifier), also z.B. die Variable x oder auch Funktionsnamen wie sin, cos usw. |
<mn> | In dieses Tag setzt man eine Zahl (number) |
<mo> | Hier gehören Operatoren hinein, also z.B. '+' |
In MathML existieren mehr als 1800 Entities zur Beschreibung von mathematischen Symbolen, wie z.B. α (steht für den ersten griechischen Buchstaben Alpha).
Mittlerweile existieren einige Plug-Ins für die gängigen Browser, die MathML darstellen können und es existieren auch Tools zum komfortablen Erstellen und Bearbeiten von MathML-Dokumenten (z.B. MathType). Ein Anwendungsbeispiel für MathML ist Snippet, ein Hausaufgaben-System der "Diskrete Strukturen"-Fakultät. Mit Hilfe von Snippet können Studenten im Browser über das Internet ihre mit mathematischen Formeln versehenen Aufgaben ansehen und die Lösungen eingeben. Die Bewertung erledigt das Programm automatischund verschickt die Ergebnisse automatisch per e-mail an die Studenten.
GuiDef ist eine XML-Sprache zur Definition des Aussehens von Programmen der Firma belenus. In einer GuiDef-Datei gibt man an, welche Komponenten des Programmes dargestellt werden. Sie können auch mit Parametern konfiguriert werden. Dabei kann man beliebig viele Komponenten und Container, welche wiederum Unterkomponenten und -container enthalten können, hinzufügen und beliebig anordnen. Durch dieses Verfahren kann man das Programm an viele verschiedene Bedürfnisse der Nutzer anpassen, ohne den Programmcode verändern oder neu kompilieren zu müssen.
Beispiel:
<?xml version="1.0"?> <!DOCTYPE guidef SYSTEM "guidef.dtd"> <guidef> <container name="HauptContainer" class="SplitPane"> <component name="Baum" class="BTree"> </component> <container name="ViewTableSplitPane" class="BSplitPane"> <component name="ImageView" class="ImageView"> </component> <component name="Table" class="BTable"> </component> </container> </container> </guidef>
Dieses Beispiel wurde aus Gründen der Übersichtlichkeit um einige Parameter, die für die Komponenten in der Realität wichtig sind, erleichtert. Der Aufbau und die Grundlogik dieses Prinzips bleiben davon jedoch unberührt.
Und so zeigt der Browser des symbian Netbooks die Beispieldatei (von einem Applet verarbeitet) an:
Auf der linken Seite sieht man die Baumkomponente, rechts daneben ist einmal oben die Bildkomponente und unten die Tabelle zu sehen, genau so wie in der GuiDef-Datei definiert (in der Beispiel-Datei fehlen die Parameter für die Komponenten; in diesen wird u.a. eingestellt, ob die Splitpanes die Unterkomponenten horizontal oder vertikal anordnen sollen).
Die identischen Javaklassen werden auf einem Palm Pilot mit einer entsprechend veränderten guidef.xml so dargestellt:
Die einzelnen Komponenten sind hierbei wegen des kleines Displays nicht nebeneinander, sondern "hintereinander" angeordnet, d.h. sie lassen sich über Symbole in der oberen Leiste erreichen.
Es gibt grundsätzlich 2 Möglichkeiten, XML-Dokumente zu parsen, d.h. von einem Programm aus die gespeicherten XML-Daten in für das Programm sinnvolle Strukturen umzuwandeln.
Tree based parser lesen das komplette XML-Dokument ein, validieren es und bauen daraus eine baumartige Struktur (z.B. DOM) zusammen. Dieser Baum kann dann vom Programm benutzt werden. Umgekehrt gibt es auch XML-Schreiber, welche eine Baumstruktur in ein XML-Dokument umwandeln.
DOM (Document Object Model) ist ein Objektmodell, es beschreibt die in einem Dokument einer bestimmten XML-Anwendung enthaltenen Elemente als Objekte, für die Verarbeitung mit einer objekt-orientierten Programmiersprache wie z.B. Java. DOM liefert eine komplette Baumstruktur aller Objekte eines XML-Dokuments und eignet sich daher nicht für extrem große XML-Files. DOM wird z.B. benutzt, um die Dokumentstruktur von Internet-Dokumenten (HTML und XML) zu beschreiben. Mit Hilfe von DOM können dann beispielsweise "JavaScripter" einheitich auf die einzelnen Elemente eines Dokuments zugreifen. Bisher haben viele Webdesigner große Probleme mit JavaScript, da die Browser-Hersteller bei der Objekt-Struktur unterschiedliche Lösungen benutzen.
Event based parser arbeiten asynchron. Sie werden einmal gestartet und erzugen dann für jedes Tag einen Event. Das Programm kann dann schon, bevor das komplette Dokument eingelesen wurde, erste Daten darstellen. Event based parsing macht also vor allem im Bereich von WAN Sinn ;-), beispielsweise im Internet, wo die Daten relativ langsam über die Leitungen gehen.
SAX (Simple API for XML) ist eine Programm-Schnittstelle (Application Programmers Interface API) für die Verarbeitung einer Klasse von XML-Dokumenten mit Hilfe einer Programmiersprache. SAX liefert ein XML-Element nach dem anderen (event based parsing) in einem Eingabestrom und eignet sich daher auch für sehr große XML-Files.
Mit XSL (XML Stylesheet Language) läßt sich definieren, wie XML-Dateien einer bestimmten Dokumentklasse dargestellt werden sollen (z.B. in einem Browser). Es existierten zwar auch vor XSL schon Sprachen für genau diesen Zweck, doch waren sie entweder zu komplex, wie DSSSL (Document Style Semantics and Specification Language), welche für SGML benutzt wird, oder zu eingeschränkt, wie CSS (Cascading Style Sheets), welches vor allem in Verbindung mit HTML eingesetzt wird.
Webserver, die intern mit XML arbeiten und die üblichen Browser bedienen sollen, übersetzen die XML-Dokumente mit einem XSL Processor in HTML und CSS, bevor sie an die Clients geschickt werden.
Da XSL noch nicht verabschiedet ist und die Spezifikation noch geändert werden kann, benutzen die Browser von Netscape und Microsoft zur Formatierung der XML-Dateien noch nicht XSL, sondern das von HTML her bekannte CSS. CSS ist aber bei weitem nicht so mächtig wie XSL und sobald die XSL-Spezifikation verabschiedet ist, werden die Browser-Hersteller dann (hoffentlich schnell) auf dieses Format umstellen.
XSL kann alle CSS-Befehle verwenden, allerdings in einer XML-Syntax. Statt em {font-weight:bold} heißt es in XML (etwas umständlicher):
<style-rule> <target-element type="emph"/> <apply font-weight="bold"/> </style-rule>
XSL kann Elemente aber auch in Bezug auf ihre Position auswählen und formatieren, z.B. erster Paragraph des dritten Abschnittes, übergeordnetes Element des letzten Absatzes etc. Außerdem kann man mit XSL auf Element-Inhalte (lesend) zugreifen, also zum Beispiel jeden Absatz, der das Wort "Warnung" enthält, hervorheben.
So kann man mit XSL einfach nützliche, mit HTML und CSS sehr schwierige bis unmögliche Aufgaben lösen, wie z.B. Zeilen einer Tabellen abwechselnd mit verschiedenen Hintergrundfarben zu versehen. Wer das einmal mit HTML und CSS probiert hat, wird sich beim Einfügen einer Zeile in den oberen Teil einer großen Tabelle sehr geärgert haben. In diesem Fall müssen alle darunter liegenden Zeilen neu bearbeitet werden. Dieses Problem läßt sich, sofern man auf seinem Webserver Skripte einsetzen kann, auch per dynamischer Seitengenerierung lösen, ist aber nicht so elegant wie eine Lösung mit XSL.
Eine gute Einführung und etwas detailliertere Erklärung von XSL findet sich unter www.heise.de/ix/artikel/1998/05/138/.
Hier noch eine kurze Erklärung des Begriffs XSLT: XSLT (XSL Transformations) ist eine Sprache zur Umwandlung von XML-Sprachen (auch unabhängig von XSL) und wird von XSL auch zu diesem Zweck (XML => HTML) benutzt.
Dieses Kapitel soll nur einen groben Überblick über Verweise in XML geben. Nähere Informationen zu den Themen XLink und XPointer sind in den entsprechenden Dokumenten des W3C-Konsortiums zu finden.
XML verfolgt ein anderes Konzept für Verweise als HTML. In HTML versteht man unter einem Link (Verweis) einen Zeiger auf eine Adresse im Internet. In XML ist mit Links jedoch viel mehr möglich. Man kann ganze Listen von Links in externe Dateien auslagern und diese dann in XML-Dokumente einbinden; das kann die Wartung von gleichen Links in mehreren Dokumenten erheblich vereinfachen. Desweiteren kann man externe Dokumente in XML-Dateien einbetten (vergleichbar mit, aber viel flexibler als, IFrames in HTML).
Mit XLink (XML Linking Language) werden Links zwischen verschiedenen Dokumenten definiert. Ziel von XLink ist es, eine einheitliche, möglichst umfassende Lösung eines Link-Konzeptes zu schaffen, das von allen XML-Dokumenten benutzt werden kann.
Beispiel eines einfachen Links:
<xlink:simple href = "http://www.w3c.org" role = "extern" show = "new" actuate = "user">Zur W3C Homepage </xlink:simple>
Die Erklärung der einzelnen Attribute des <xlink:simple>-Tags:
href | wie bei HTML |
role | sagt der Anwendung, wie der Link behandelt werden soll (ein Verweis auf ein Inhaltsverzeichnis könnte beispielsweise so dargestellt werden, daß es unabhängig von der Position des Benutzers im Dokument immer sichtbar ist) |
show | gibt an, wie das referenzierte Dokument angezeigt werden soll (new: in einem neuen Fenster; embed: eingebettet; replace: aktuelles Dokument mit dem referenzierten ersetzen) |
actuate | gibt an, wann der Verweis ausgeführt werden soll (user: bei Benutzerinteraktion, z.B. bei Mausklick; auto: sofort, wenn der Verweis von der Anwendung verarbeitet wird) |
Es gibt auch sogenannte erweiterte Verweise, in denen man u.a. mehrere Zieladressen angeben kann, sinnvoll z.B. bei stark frequentierten Servern, deren Dokumente auch auf andere Server gespiegelt werden. Dann kann der Nutzer aus einer Liste auswählen oder das Programm sucht sich selbst den schnellsten heraus.
Mit Hilfe von XPointer (XML Pointer Language) kann man auf Elemente innerhalb von XML-Dokumenten zuzugreifen (ähnlich wie bei HTML mit <a href="#anchor">).
XML hat ein enorm großes Einsatzgebiet und könnte in der Lage sein, den sowohl in Informatik und Wirtschaft sowie in vielen anderen Bereichen (Politik, Wissensbildung etc.) bestehenden Bedarf an einfachem und effizientem Datenaustausch zu decken.
Bereits jetzt wird XML in vielen Anwendungen eingesetzt und in Zukunft vielleicht die Sprache des Internets werden. Durch die Standardisierung von XML und die große Akzeptanz dieser Sprache sogar von Monopolisten und Marktbeherrschern, denen bisher der anwendungs- und plattformübergreifende Datenaustausch nicht geschäftsfördernd erschien, wird XML in der nahen Zukunft eine große Rolle spielen.
Ein Problem ist der noch fehlende Abschluß einiger wichtiger Spezifikationen wie XSL, der die Entwicklung entsprechender Anwendungen erschwert oder unmöglich macht. In diesem Jahr (2001) werden aber voraussichtlich neben XSL auch einige weitere wichtige Spezifikationen fertiggestellt, sodaß in nicht allzu langer Zeit weitere Anwendungsgebiete von XML erschlossen werden können.
Ein weiteres großes Problem könnten verschiedene Vorstellungen der Firmen zur Erstellung von DTDs sein: Wenn verschiedene Hersteller für die gleiche Art von Daten (z.B. Text/Textverarbeitung) jeweils eigene DTDs definieren, gibt es wieder ähnliche Probleme wie bisher. Zwar ist das grundlegende Format der verschiedenen DTDs gleich und auch die Dokumente selbst entsprechen dem XML-Standard, es müssen aber wieder Im- und Export-Filter bzw. Konverter geschrieben werden. In einigen Fällen wird dies sicher so sein, hier müssen das W3C-Konsortium bei allgemeinen DTDs, aber auch die Firmen selbst bei speziellen DTDs schnell genug sein, zu allseits anerkannten DTDs zu finden. Ob das in den meisten Bereichen gelingt, besonders in Anbetracht der Geschäftsstrategien gerade vieler großer Firmen, ist fraglich. Aber selbst wenn das nicht in allen Bereichen gelingt, in vielen Anwendungsgebieten wird es in Zukunft ganz sicher firmenübergreifende DTDs und damit beliebig austauschbare XML-Dokumente geben.
[01] | XML 1.0 | http://www.w3.org/TR/REC-xml |
[02] | About the W3C | http://ww.w3.org/Consortium/ |
[03] | XML Tutorial | http://indi.wu-wien.ac.at/~student/xml/intro.htm |
[04] | Extensible Markup Language (XML) | http://members.aol.com/xmldoku/f_und_a.htm |
[05] | Referat: XML | http://seanizer.de/xml/referat |
[06] | tecChannel: Zukunft XML | http://www.tecchannel.de/internet/452/6.html |
[07] | Kleines Lexikon zu WWW und HTML | http://www.boku.ac.at/htmleinf/heinwas.html |
[08] | Investing In Knowledge | http://www.oneworld.org/thinktank/iktools/xml/what.html |
[09] | A Gentle Introduction to MathML | http://www.mathtype.com/support/tutorials/mathml/default.stm |
[10] | XSL | http://stio1.sari.fh-wuerzburg.de/student/i199/xsl/frame_index.html |
[11] | XML Linking Language (XLink) | http://www.fh-wedel.de/~si/seminare/ws00/Ausarbeitung/3.xlink/xlink1.htm |
[12] | Verweise in XML - XLink und XPointer | http://i44www.info.uni-karlsruhe.de/~i44www/lehre/ XML-WS-99-00/vortraege/verweise/verweise_v3_document.htm |
|
|
|
WS1999 | SS2000 | WS2000 | SS2001 |
|
|||||||||||||||||
Personen | Lehre | Lehrstuhl | Forschung | Suche | ||||||