XML
Ingo Beutler
Inhaltsverzeichnis
1 Einleitung in XML
1.1 Was ist XML?
1.2 Zusammenhang SGML, XML, HTML
1.2.1 SGML
1.2.2 HTML
1.2.3 XHTML
2 XML Grundlagen
2.1 Beispiel
2.2 Baumstruktur einer XML Datei
2.3 Aufbau
Elemente
Attribute
Kommentar
XML Prozessor Informationen
2.4 Kodierung
2.5 Namensräume
2.6 Wohlgeformtheit und Gültigkeit
3 Form und Inhalt in XML
3.1 Document Type Definition (DTD)
3.2 XML Schema
3.3 XML Anwendungen
3.3.1 Extensible Stylesheet Language (XSL)
3.3.1.1 XSL Transformations (XSLT)
3.3.1.2 XSL Formating Objects (XSLFO)
3.3.2 Extensible Linking Language (XLL)
3.3.2.1 XML Linking Language (Xlink)
3.3.2.2 XML Pointer Language (Xpointer)
4 XML Schnittstellen
4.1 SAX
4.2 DOM
5 XML in der Praxis
Abkürzungsverzeichnis
Literatur
Einleitung
Das Internet wächst unaufhaltsam. Immer mehr Menschen haben Zugriff
auf dieses Medium, mit seinem annähernd unendlichen
Informationsgehalt.
Die Standardsprache des Internet, die Hypertext Markup Language
(HTML), wurde hauptsächlich zur Darstellung von Daten entwickelt. Da
das Internet immer interaktiver und automatisierter wird, reicht HTML
nicht mehr aus. Genau hier setzt XML an.
Die Extensible Markup Language (XML) ist eine Metasprache, d.h. XML gibt Regeln vor, wie Sprachen beschrieben werden können.
Der Begriff XML beinhaltet mehr als nur die Metasprache. Es ist eine
Art XML-Umgebung gemeint, zu der noch andere Ideen und Sprachen
gehören.
Entwickelt wurde XML vom World Wide Web Consortium (W3C). [WIL], [THO]
Die nachfolgenden 2 Graphiken (Abb. 1, 2) geben einen Üerblick über
den Zusammenhang der drei wichtigsten Markup-Sprachen:
Abbildung 1: SGML, XML, HTML
Abbildung 2: Geschichte
XML ist eine Teilmenge der Standard Generalized Markup Language
(SGML). SGML ist eine sehr mächtige und dadurch auch sehr komplexe
Metasprache. Wegen ihrer Komplexität können SGML-Dokumente nicht
schnell erstellt und verarbeitet werden. Das macht sie unbrauchbar für
das Internet.
HTML ist eine reine SGML-Anwendung. Sie enthält Sprachelemente, die in
XML verboten sind: In HTML ist es erlaubt gegen die Wohlgeformtheit
(siehe unten) von XML zu verstoßen. Deshalb ist HTML inkompatibel zu
XML.
Um diesem Umstand Abhilfe zu schaffen wurde XHTML entwickelt. Diese
HTML Version wurde mit XML "strenger" definiert. [WIL], [THO]
Der Aufbau eines XML-Dokuments ist dem Aufbau eines HTML Dokuments
sehr ähnlich.
Abbildung 3 zeigt ein kleines Beispiel, wie ein XML-Dokument über das
Proseminar "Rund ums Internet" aussehen könnte:
Abbildung 3: XML-Beispiel
In der ersten Zeile stehen XML Prozessor-Informationen, die die
Versionskennzeichnung des XML-Dokuments und die Kodierung
enthalten. Das Attribut "standalone" besagt, dass bei diesem
XML-Dokument nur die Wohlgeformtheit (siehe unten) überprüft werden
kann.
Das Wurzelelement heißt "Proseminar". Es enthält 3 Elemente (Name,
Teilnehmer, Treffen) und einen Kommentar.
"Name" enthält den Namen des Proseminars: "Rund ums Internet".
Das Element "Teilnehmer" enthält ein weiteres Element "Anzahl". In
diesem steht die Anzahl der Teilnehmer.
"Treffen" ist das letzte Element und besitzt die beiden Attribute
"Ort" und "Tag".
Der Kommentar enthält eine kurze Erläuterung zu der Teilnehmeranzahl.
Jedes XML-Dokument kann als Baumstruktur dargestellt werden (siehe
Abb.4). Jeder Knoten in diesem Baum entspricht einem Objekt im
XML-Dokument.
Abbildung 4: Baum Beispiel
Eigentlich ist ein XML-Dokument nichts anderes als eine
Textdatei. Hält die Textdatei zusälich folgende Grammatik-Regeln ein,
wird sie zum XML-Dokument:
Abbildung 5: Wichtige Teile eines XML Dokuments
Elemente beginnen mit dem Starttag, gefolgt von dem Inhalt und am Ende
das Endtag (Bsp.5 1. + 2.Punkt). Falls das Element keinen Inhalt
besitzt, kann es auch abgekürzt werden (Bsp.5 3.Punkt). Elementnamen
sind "case sensitive", d.h. Groß- und Kleinschreibung werden
unterschieden. Erlaubt sind alle Namen die mit Buchstaben oder
Unterstrich "_" beginnen, auß allen Variationen der Groß- oder
Kleinschreibung von "xml".
Eine Besonderheit des Inhalts von Elementen ist, dass bestimmte
Zeichen (<, >, &, ', und ") nur an Stellen stehen dürfen an
denen sie nicht mit strukturierenden Zeichen verwechselt werden und so
die Form des Dokuments zerstören können. [W3S]
Attribute werden immer im Start-Tag deklariert und spezifizieren
Elemente näher (Bsp.5 4.Punkt). [W3S]
Ein Kommentar beginnt mit "<!--" und endet mit "-->"(Bsp.5
5.Punkt). Dazwischen dürfen alle Zeichen stehen, solange diese den
Beginn oder das Ende des Kommentars nicht verändern: z.B. darf "-"
nicht letztes Zeichen sein. [W3S]
Anweisungen an den XML Prozessor beginnen immer mit "<?" und enden
mit "?>"(Bsp.5 6.Punkt). Bei jedem XML-Dokument muss in der ersten
Zeile eine XML Prozessor-Information stehen, die die
Versionskennzeichnung des XML-Dokuments enthält.[ W3S]
Da das Internet weltweit erreichbar ist, wird für eine Kodierung
benötigt, die alle Zeichen kennt. Die Kodierung eines XML-Dokumentes
wird direkt in den XML Prozessor Informationen im Attribut "encoding"
angegeben:
<?xml version="1.0" encoding="US-ASCII" ?>
oder separat
<?xml encoding="US-ASCII" ?>
Werden keine Angaben zur Kodierung gemacht, nimmt der XML-Prozessor
an, dass UTF-8 verwendet wurde. UTF-8 ist eine komprimierte Version
von Unicode. Eigentlich kann jede beliebige Kodierung genommen werden,
vorausgesetzt der XML-Prozessor kennt sie. Jeder XML-Prozessor muss
mindestens 2 Kodierungen kennen: UTF-8 und Unicode.
Im Folgenden ein kurzer Überblick über die gebrächlichsten Kodierungen:
| ASCII: |
American Standard Code for Information Interchange;
in 7 bit werden 128 Zeichen kodiert, für amerikanisches Englisch |
| ISO Zeichensätze: |
International Standards Organisation hat Zeichensätze für
verschiedene Länder definiert. |
Die ersten 128 Zeichen (7Bit) sind ASCII gleich, die restlichen 128
Zeichen (+1 Bit) stehen für landesspezifische Zeichen.ASCII und ISO
Zeichensätze benötigen ein Byte zur Darstellung von einem Zeichen,
enthalten aber nur landesspezifische Zeichen.
Um weltweit XML Daten austauschen zu können, werden Kodierungen
benötigt, die möglichst alle gänigen Zeichen enthalten, zum
Beispiel:[SKE]
| Unicode: |
Unicode enthält fast alle Zeichen fast aller Schriften der Welt. |
| UTF-8: |
Unicodekodierung, die 1 Byte für ASCII-Zeichen und bis zu
6 Byte für exotische Zeichen benutzt |
| UTF-16: |
kodiert alle bekannten Zeichen, wobei 2 Byte für häufigere
und 4 Byte für exotischere benutzt werden. |
Jeder kann in XML-Dokumenten Elemente und Attribute nach Belieben
benennen. Das führt bei mehreren XML-Dokumenten leicht zum
Mehrfachgebrauch von Namen, was zu Verwirrung und Fehlern führen kann.
Auf der anderen Seite sollten Elemente und Attribute eindeutig zu
einer XML-Anwendung zugeordnet werden können, damit die Anwendung sie
erkennen und verarbeiten kann.
Namensräume weisen Elementen und Attributen URIs zu. So können
Elemente und Attribute eindeutig identifiziert werden und die oben
genannten Forderungen werden erfüllt. Abbildung 6 zeigt eine
Möglichkeit, wie Namensräume bei der XML-Datei zum Proseminar Rund ums
Internet genutzt werden können.[W3S]
Abbildung 6: Namensräume in XML
Wohlgeformt sind XML-Dokumente, wenn sie alle "Grammatik"-Regeln
einhalten, d.h. wenn sie formal korrekt sind.
Gütig sind sie, wenn es eine Document Type Definition oder ein Schema
gibt, nach deren Regeln sie aufgebaut sind (siehe unten).[W3S]
Abbildung 7: XML im Internet
Abbildung 7 zeigt, wie XML im Internet eingesetzt werden kann. Das
darzustellende Dokument wird in drei Einheiten aufgeteilt, die der
Browser verarbeiten muss:
- Typbeschreibung: Wie ist es aufgebaut?
- XML-Dokument: Inhalt in XML-Format.
- Layoutbeschreibung: Wie ist es darzustellen?
Eine DTD beschreibt den strukturellen Aufbau und die logischen
Elemente einer Klasse von Dokumenten. Sie dient zur Überprüfung der
"Gültigkeit" einer XML-Datei. In der DTD wird festgelegt, welche
Elemente und Attribute in welcher Reihenfolge zugelassen sind.
Es gibt zwei Arten von DTD`s:
- die externe DTD steht in einer separaten Datei, auf die verwiesen
wird.
- die interne DTD ist direkter Bestandteil des XML-Dokuments
In Abbildung 8 ein Beispiel, wie eine DTD für XML-Dokument für
Proseminar "Rund ums Internet" aussehen könnte.
Abbildung 8: DTD Beispiel
Jedes definierte Element einer DTD beginnt mit "<!ELEMENT". Danach
folgt der Name des Elements und sein Inhalt. Die Definition wird
abgeschlossen mit ">".
Attributdefinitionen beginnen mit "<!ATTLIST". Durch ein
Leerzeichen getrennt, folgt dann der Name des Elements, in dem das
Attribut vorkommt. Dann der Attributname und sein Wert. Auch
Attributdefinitionen werden mit ">" abgeschlossen.
Abbildung 9 erläutert noch weitere Deklarationssymbole, die regulären
Ausdrücken sehr ähnlich sind.
Abbildung 9: Deklarationssymbole in einer DTD
PARSED CHARACTER DATA meint alle in der Kodierung definierten Zeichen.
Die Nachteile einer DTD sind: [DEV]
- Eine DTD besitzt eine eigene Syntax (kein XML).
- Das Verfahren der Namensräume wird nicht unterstützt
- Eine genauere Definition von Datentypen (nur #PCDATA) ist nicht
möglich.
XML Schema (XSD) ist der mächtigere Nachfolger von DTD, der alle
Nachteile von DTD verbessert.
In XSD gibt es 3 verschiedene Datentypen:
- Vordefinierte Datentypen: string, boolean, double,...
- Einfache Datentypen: Eingeschränkte vordefinierte
Datentypen
- Komplexe Datentypen: Kombinationen aus anderen Datentypen
Abbildung 10 enthält ein Beispiel, wie eine Schema-Datei fürProseminar
"Rund ums Internet" aussehen könnte.
Abbildung 10: XSD Beispiel
Man sieht, dass XML-Schema Dokumente genauer, aber auch größer werden,
als DTD`s.
Jedes Element in einem XSD-Dokument besitzt das Präfix "xsd:" was
zeigt, dass sich alle Elemente im gleichen Namensraum befinden. Der
Namensraum muss im äußerstenersten Element des Dokuments zugewiesen
werden:
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
Wie in Abbildung 10 gezeigt, werden die einzelnen Elemente des
XML-Dokuments beschrieben. Die Bedeutung einzelner Elemente wird in
der Spezifikation des W3C genauer erklärt [W3C].
Das Element "Proseminar" muss als komplexer Datentyp definiert
werden. Die enthaltenen Elemente werden entweder direkt definiert
(Element "Name" als vordefinierter Datentyp) oder referenziert
(Element "Teilnehmer"). Das Element "Teilnehmer" wird im selben
Dokument als einfacher Datentyp definiert.[W3C]
Es gibt zu XML eine Menge von Anwendungen. Hier werden nur einige
universell einsetzbare kurz erklärt.
XSL besteht aus 2 Teilen: XSLT für die Transformation und XSL-FO für
die Formatierung von XML-Dokumenten.
XML-Dokumente können mit XSLT in andere XML-Dokumente gewandelt
werden. Dabei wird die Struktur oder der Inhalt des XML-Dokuments
verändert. Beispiele hierfü sind die Äderung der Reihenfolge,
Sortieren und Umbenennen von Knoten und Attributen. Abbildung 11 gibt
einen schematischen Überblick über den Transformationsprozess.[DEV]
Abbildung 11: XSLT
XSLFO beschreibt das Layout der Darstellung für die Elemente eines
XML-Dokuments. [DEV]
Xlink gibt einen Mechanismus vor, mit dem in XML-Dokumenten Links zu
anderen XML-Dokumenten erzeugt werden können.
Es gibt 3 verschiedene Arten von Verweise zwischen Dokumenten: [WIL]
- einfache Verweise: Jeder Verweis zeigt auf ein einzelnes Dokument
(wie in HTML)
- erweiterte Verweise: Ein Verweise besitzt mehreren Ziele
(Mehrfachverweise)
- Gruppen erweiterter Verweise: Mehrere Mehrfachverweise werden in
Gruppen zusammengefasst.
Mit Xpointer können Verweise innerhalb von Dokumenten definiert
werden. Dabei wird die Baumstruktur genutzt, um gesuchte Elemente zu
lokalisieren.
Auch hier gibt es mehrere Möglichkeiten:
- Absolute Lokalisierung: Es wird nach dem eindeutigen Attribut "id"
gesucht
- Relative Lokalisierung: Von einem gewählten Knoten aus werden
z.B. die Eltern, Kinder, Vorfahren betrachtet
- Attribut Lokalisierung: Der Zielknoten wird durch bestimmte
Attribute identifiziert
- String Lokalisierung: Hier wird wie in einer normalen Textdatei
nach einer Zeichenkette gesucht
Alle Lokalisierungsarten sind kombinierbar.[WIL]
Mit dem Begriff Schnittstelle sind hier Schnittstellen für
Anwendungsprogramme, so genannte XML-Prozessoren, gemeint.
Die am Weitesten verbreiteten Schnittstellen sind SAX und DOM.
Simple API for XML (SAX) geht sequentiell durch das XML-Dokument und
reagiert auf dessen Elemente, wenn es sie antrifft. Dieses Konzept
basiert auf Ereignissen. Es ist besonderst geeignet fü große Dateien
oder bei schnellen Zugriffen.[SUN], [DEV]
Bei dem Document Object Model (DOM) wird das komplette XML-Dokument
als Baumstruktur im Arbeitspeicher zur Verarbeitung bereitgestellt. Es
eignet sich besonderst bei Transformationen.
Allgemeines DOM Beispiel:
Abbildung 12: DOM
Wie in Abbildung 12 zu sehen ist, besitzt jedes DOM eine Wurzel namens
"Document". Für jeden Teil des XML-Dokuments wird ein eigener Knoten
eingefürt z.B. für Kommentare, Attribute. Der Inhalt eines solchen
Elements wird zusätzlich als Kindknoten gespeichert.[SUN], [DEV]
Hier sind ein paar Beispiele, wo in der Praxis XML genutzt wird: [THO]
- Verbreitete Browser (z.B. von Microsoft, Netscape) können in ihren
aktuellen Versionen XML-Dateien auf Wohlgeformtheit überprüfen und
lesen
- Wireless Markup Language (WML): Beschreibungssprache für
Displayinhalte auf Handys oder anderen internetfähigen Kleinstgeräten
- Mathematical Markup Language (MathML): einfache Darstellung von
Formeln in Browsern
- Chemical Markup Language (CML): graphische Darstellung der
Moleküstrukturen in speziellen Browsern
- Astronomical Instrument Markup Language (AIML): Bedienung von
Teleskopen und zukünftig vielleicht Satelliten
- Biosequence Markup Language (BSML): Format zur Speicherung von
Genkantierungen und -sequenzierungen
- Scalable Vector Graphics (SVG): Beschreibung von 2-dimensionalen
Vektorgrafiken
- Synchronized Multimedia Integration Language (SMIL): Drehbücher
für verschiedene Medienelemente wie Text, Bilder, Video und Audio
- Resource Description Framework (RDF): Sprache zur Beschreibung von
Metadaten (Suchmaschinen, Bibliothekskataloge)
- ASCII: American Standard Code for Information Interchange
- DOM: Document Object Model
- DTD: Document Type Definition
- HTML: Hypertext Markup Language
- ISO: International Standards Organisation
- SAX: Simple API for XML
- SGML: Standard Generalized Markup Language
- UCS: Universal Character Set
- UTF: UCS Transformation Format
- XHTML: Extensible Hypertext Markup Language
- Xlink: XML Linking Language
- XLL: Extensible Linking Language
- XML: Extensible Markup Language
- Xpointer: XML Pointer Language
- XSD: XML Schema Datatypes
- XSL: Extensible Stylesheet Language
- XSLFO: XSL Formating Objects
- XSLT: XSL Transformations
- W3C: Worl Wide Web Consortium
|
Letzte Änderung: 2003-02-05 15:54:52
|