XML - Extensible Markup Language

Kurz-Info von Hubert Partl . Version: Originaltext September 2000 + Korrrekturen 2007

  1. Was ist XML?
  2. Warum XML?
  3. XML-Syntax
  4. XML-Anwendungen
  5. Ausführlichere Informationen

Online: http://www.boku.ac.at/htmleinf/xmlkurz.html . Download
Ausdrucken: ftp://ftp.boku.ac.at/www/xmlkurz.ps . Copyright
Korrekturvorschläge an partl@mail.boku.ac.at


Was ist XML?

XML (Extensible Markup Language)

XML ist eine vereinfachte Form von SGML. So wie HTML mit SGML definiert ist, so kann man mit XML eigene Markup-Sprachen oder auch eigene Erweiterungen von HTML bzw. XHTML mit eigenen Tags für bestimmte Elemente mit bestimmten logischen Bedeutungen definieren.
Die mit XML definierten Markup-Sprachen werden als XML-Anwendungen bezeichnet. Die Syntax, Struktur und Bedeutung der Tags wird für jede XML-Anwendung mit einer DTD oder einem Schema definiert. Die Verarbeitung kann mit XML-Parsern mit DOM oder SAX erfolgen. Wie die Elemente sichtbar dargestellt werden sollen, kann mit XSL oder CSS definiert werden. XML-Dokumente können auch Hypertext-Links enthalten, entweder wie in HTML oder in der Form von XLink oder XPointer.
XML-Anwendungen eignen sich einerseits für die Darstellung in Web-Browsern - also als Ersatz oder Ergänzung von HTML - und andererseits für die Verarbeitung mit EDV-Programmen (z.B. in der Textverarbeitung, Tabellenkalkulation, Datenbanken, kommerziellen Anwendungen u.a.) und als Austauschformat zwischen solchen Programmen - also als Ersatz für RTF, CSV und EDI.


Warum XML?

XML ist eine Metasprache zur Definition von Markup-Sprachen.

So wie HTML mit SGML definiert ist, so kann man mit XML eigene Markup-Sprachen definieren, und künftige Versionen von HTML werden ebenfalls mit XML definiert werden (XHTML).

So wie HTML festgelegt und normiert ist und daher für den weltweiten Austausch und die Übertragung und Verwendung von Web-Pages zwischen vielen verschiedenen Web-Servern und Web-Browsern geeignet ist, so kann man mit XML eigene Datei-Strukturen für verschiedene Zwecke definieren und normieren, die dann ebenfalls von vielen Personen mit vielen verschiedenen Programmen und auf vielen verschiedenen Rechnern verwendet werden können. Mit der Hilfe von Style-Sheets können XML-Dokumente außerdem ebenfalls, so wie HTML-Files, von Web-Browsern dargestellt und ausgedruckt werden.

Wofür kann man nun solche mit XML definierte Markup-Sprachen, sogenannte "XML-Applikationen", verwenden? Welchen Zweck kann es haben, mit XML solche Sprachen festzulegen und zu normieren? Welche Vorteile haben solche XML-Anwendungen gegenüber HTML oder anderen Datei-Formaten?

Außerdem ist die Syntax von XML so streng festgelegt, daß XML-Anwendungen wesentlich einfacher, bequemer und effizienter von Programmen weiter verarbeitet werden können als HTML-Files.

Markup und Darstellung

Die HTML-Befehle beschreiben eigentlich nur, in welcher Art und Weise die Textteile strukturiert werden sollen (Überschrift, Absatz, Liste, Tabelle, Normalschrift, Fettschrift usw.).

Beispiel:

Der folgende HTML-Code

<p>
Hubert Hans <b>Partl</b>
<br>
Muthgasse 18
<br>
A-1190 Wien
<br>
geb. 8. M&auml;rz 1949
</p>
bewirkt eine Darstellung wie

Hubert Hans Partl
Muthgasse 18
A-1190 Wien
geb. 8. März 1949

- - -

Mit XML kann man Tags definieren, die die Bedeutung der Informationen angeben. Mit einer geeigneten DTD kann die obige Information also in einem XML-Dokument in der folgenden Form enthalten sein:

<person id="p4681" >
   <vorname>Hubert</vorname>
   <vorname>Hans</vorname>
   <zuname>Partl</zuname>
   <titel>Dr.</titel>
   <adresse>Muthgasse 18</adresse>
   <plz>A-1190</plz>
   <ort>Wien</ort>
   <geburtstag>
      <tag>8</tag>
      <monat>März</monat>
      <jahr>1949</jahr>
   </geburtstag>
</person>

- - -

Mit einem geeigneten Style-Sheet bewirkt das XML-Dokument genau die selbe Darstellung wie das obige HTML-Dokument:

Hubert Hans Partl
Muthgasse 18
A-1190 Wien
geb. 8. März 1949

- - -

Mit einem anderen Style-Sheet kann dasselbe XML-Dokument aber auch so dargestellt werden (als Visitenkarte):

 
Hubert Hans Partl
 
Muthgasse 18
A-1190 Wien
 

- - -

oder so (in einer Liste):

Partl, Dr. Hubert Hans (1949)

- - -

Verarbeitung in Programmen

XML-Dokumente eignen sich nicht nur für die Darstellung in Web-Browsern und das Ausdrucken auf Papier, sondern auch für die weitere Verarbeitung in Programmen, in denen die logische Bedeutung der Informationen eine Rolle spielt.

Beispiel:

Eine Suche nach dem Wort "März" innerhalb von Absätzen <p> in HTML-Files der obigen Struktur würde nicht nur die Personen liefern, die im März geboren sind, sondern auch den Rektor mit dem Namen Leopold März sowie alle Personen, die in der Märzstraße wohnen.

Eine Suche nach dem Wort "März" innerhalb der in den XML-Files mit <geburtstag> bezeichneten Elemente würde hingegen wirklich nur die Personen liefern, die in diesem Monat Geburtstag haben.

Außerdem kann man die in den XML-Files beschriebenen Personen leicht nach den einzelnen Datenfeldern sortieren, also z.B. nach der Postleitzahl oder nach dem Geburtsjahr, oder das Durchschnittsalter berechnen oder andere Verarbeitungen der Daten vornehmen.


XML-Syntax

Start- und End-Tags

Die meisten Befehle (Tags) in SGML- und XML-Anwendungen - wie auch in HTML - treten paarweise als Start- und End-Tags auf und geben an, welche Bedeutung der dazwischen liegende (eventuell durch weitere Tags unterteilte) Text hat:

<xxx>  ... Text ...  </xxx>
oder
<xxx  yyy="zzz"  ... >  ... Text ...  </xxx>

In HTML ist der End-Tag in vielen Fällen optional, d.h. er darf weggelassen werden. Der Web-Browser kann dann auf Grund der in der HTML-Norm festgelegten Bedeutung der HTML-Tags "erraten", an welcher Stelle er sich den nicht angegebenen End-Tag "dazudenken" muss.

Beispiel: Der HTML-Tag <p> beginnt einen neuen Absatz. Der End-Tag </p> muss nicht angegeben werden, denn immer wenn ein neuer Absatz mit <p> oder eine Überschrift mit <h1> bis <h6> oder eine Liste mit <ul> oder <ol> oder <dl> beginnt, bedeutet das automatisch das Ende des vorherigen Absatzes.

Bei XML-Anwendungen müssen (im Gegensatz zu HTML) die End-Tags immer angegeben werden und dürfen niemals weggelassen werden:

Beispiel:

Richtig ist

<p> ... Text ... </p><p> ... Text ... </p>
Nicht richtig wäre
<p> ... falsch ... <p> ... falsch ...

Diese "strengere" Regel hat unter anderem die folgenden Gründe: Im Gegensatz zur festgelegten HTML-Norm soll der Anwender bei XML-Applikationen die Möglichkeit haben, nachträglich zusätzliche Tags in der DTD oder im Schema zu definieren, und daher können die Verarbeitungsprogramme nicht so wie der HTML-Browser immer nach denselben Regeln die fehlenden End-Tags selbst korrigieren. Außerdem sind die verarbeitenden Programme viel einfacher zu schreiben und können viel effizienter ablaufen, wenn sie sich darauf verlassen können, daß das XML-File syntaktisch richtig ist, und keine automatische Fehlerkorrektur programmiert werden muss.

Einzelne Elemente ohne End-Tag

In HTML gibt es Tags, zu denen es keinen End-Tag gibt, weil sie nicht die Eigenschaften eines Textbereiches definieren sondern einzelne, selbständige Elemente darstellen. Beispiele sind <br> für einen Zeilenwechsel, <hr> für eine Trennlinie oder <img> für ein Bild.

Im XML müssen alle Tags der Form <xxx> immer einen End-Tag der Form </xxx> haben. Die XML-Tags, zu denen es keinen End-Tag gibt, müssen zur Unterscheidung davon in der Form

<xxx />
oder
<xxx yyy="zzz" ... />
gechrieben werden.

Nicht erlaubt ist also

<p> ... <br> ... falsch ... <br> ... falsch ... </p>
sondern man muss stattdessen richtig
<p> ... <br /> ... <br /> ... </p>
schreiben oder eventuell auch
<p> ... <br></br> ... <br></br> ... </p>

Der Grund für diese "strengere" Regel liegt ebenfalls in einer Vereinfachung der Programmierung: Das Verarbeitungsprogramm muss nicht darauf "warten", welche End-Tags eventuell noch kommen werden, sondern weiß immer sofort, ob es sich um ein fertiges Einzel-Element oder um den Start-Tag eines längeren Elementes handelt.

Groß- und Kleinschreibung

Im Gegensatz zu HTML ist bei XML die Groß- und Kleinschreibung nicht egal: <xxx> und <Xxx> und <XXX> sind voneinander verschiedene Befehle.

Wenn ein Befehl als <xxx> definiert ist, dann darf man nicht stattdessen <XXX> schreiben, und auch eine Kombination wie

<XXX> ... falsch ... </xxx>
wäre nicht erlaubt.

Parameter (Attribute)

Auch die Regeln dafür, wann die Werte von "Attributen" (also Parametern innerhalb von Befehlen) zwischen Quotes-Zeichen eingeschlossen werden müssen, sind bei XML strenger als das, was manche Web-Browser in HTML zulassen. Alle Attribut-Werte sollen immer in Quotes-Zeichen eingeschlossen werden. Dabei dürfen entweder das ASCII-Zeichen Double-Quotes " oder das ASCII-Zeichen Apostroph ' verwendet werden (natürlich nur paarweise, nicht vermischt), aber nicht die ähnlich aussehenden typographischen Anführungszeichen oder Akzentzeichen.

Richtig sind also nur die folgenden beiden Varianten:

<xxx  yyy="zzz"  ...  >
<xxx  yyy='zzz'  ...  >

Entities

Wie in SGML (und daher auch in HTML) kann man auch in XML Entities definieren, bei denen einem Namen ein bestimmter Text zugeordnet wird. Diese Entities kann man dann überall im Text und auch in Parametern von Befehlen in der Form

&name;
verwenden.

Typische Beispiele sind:
&lt; für das Kleiner-Zeichen <
&gt; für das Größer-Zeichen >
&amp; für das Und-Zeichen &

Entities können aber nicht nur einzelne Zeichen sondern auch längere Textteile enthalten, wie die "Abkürzungen" in der Textverarbeitung.

Schachtelung von Tags

In XML müsssen Start- und End-Tags immer richtig geschachtelt werden.

Beispiel:

Richtig sind

<person>  <vorname>  ...  </vorname>  ...  </person>

<vorname>  ...  </vorname> <zuname>  ...  </zuname>
Nicht erlaubt wären
<person> ... <vorname> ... </person> ... falsch ... </vorname>

<vorname> ... <zuname> ... falsch ... </vorname> ... </zuname>

Anmerkung: Diese Regeln gelten an sich auch für HTML genauso wie bei XML. Bei HTML können die Web-Browser aber auf Grund der festgelegten Bedeutung der HTML-Tags versuchen, zu erraten, was der Autor vermutlich gemeint hat, wenn er gegen diese Regel verstoßen hat.

Beispiel: Bei einer (nicht erlaubten) Kombination wie

<p>  ...  <em>  ...  </p> <p> ... </em> ... </p>
kann der Web-Browser möglicherweise erraten, welches Layout der Autor damit erreichen wollte. Und wenn er es nicht richtig errät, dann erscheint der Text zwar nicht in der richtigen Schriftart, aber zumindest immer noch vollständig lesbar und in der richtigen Absatz-Struktur.

Bei XML darf die Software nicht versuchen, solche Fehler durch Rateversuche zu korrigieren, sondern muss die Verarbeitung von fehlerhaften XML-Dokumenten immer mit einer Fehlermeldung abbrechen.

Ein Grund für diese "strengere" Regel ist, daß die XML-Befehle nicht nur das Layout des Textes (wie in HTML), sondern die Bedeutung der Textteile definieren, und falsche Interpretationen der Befehle daher nicht bloß zu unschönen, sondern zu logisch und inhaltlich falschen Ergebnissen führen würden.

Beispiele: Wenn ein Text-Abschnitt irrtümlich in kursiver statt fetter Schrift dargestellt wird, ist das für das Verstehen des Textes im allgemeinen nicht so tragisch wie wenn der Name mit dem Geburtsort oder der Einkaufspreis mit dem Verkaufspreis verwechselt wird.

Die XML-Tags dienen nicht nur für die Interpretation der sichtbar angezeigten Texte durch einen kritisch denkenden Menschen, sondern auch für die Weiterverarbeitung der Informationen durch automatisch laufende Computer-Programme. Deshalb müssen die Syntax-Regeln von XML strenger eingehalten werden als die von HTML.


XML-Anwendungen

Unter XML-Anwendung oder XML-Applikation versteht man die Festlegung (Normierung) von XML-Befehlen für eine Klasse von XML-Dokumenten gleicher Struktur, also für einen bestimmten Zweck.

Das Format und die Struktur der XML-Files sowie die Eigenschaften und die Schachtelung der darin vorkommenden Elemente (XML-Befehle, Tags, Entities) werden für eine XML-Anwendung mit einer DTD oder einem Schema definiert - so wie man bei EDI mit UNSM und MIG das Format und die Struktur der Nachrichten und die Bedeutung der darin enthaltenen Daten für einen bestimmten Nachrichtentyp definieren kann.

Beispiele für XML-Anwendungen

Definition von XML-Anwendungen

DTD (Document Type Definition)

Eine DTD beschreibt die Struktur einer Klasse von SGML- oder XML-Dokumenten, also einer SGML- oder XML-Applikation, mit Hilfe eines Text-Files, das alle Syntax-Regeln in einem von SGML vorgeschriebenen Format enthält. Beispielsweise ist jede HTML-Version durch eine DTD definiert. Eine Alternative dazu ist die Definition mit Hilfe eines Schemas.

Schema (Mehrzahl: Schemata)

Ein Schema beschreibt die Struktur einer Klasse von XML-Dokumenten, also einer XML-Applikation, ähnlich wie eine DTD, jedoch nicht in der DTD-Syntax sondern in einer eigenen XML-Syntax.

Verarbeitung von XML-Anwendungen

XML-Parser

Ein XML-Parser ist ein Programm, das ein XML-File liest und den Inhalt in der Form von DOM oder SAX liefert. Ein validierender Parser überprüft zusätzlich die Richtigkeit der Daten an Hand der DTD oder des Schemas.

DOM (Document Object Model)

DOM 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.

SAX (Simple API for XML)

SAX ist eine Programm-Schnittstelle (Application Programmers Interface API) für die Verarbeitung einer Klasse von XML-Dokumenten, also einer XML-Applikation, mit Hilfe einer objekt-orientierten Programmiersprache wie z.B. Java. SAX liefert ein XML-Element nach dem anderen in einem Eingabestrom und eignet sich daher auch für sehr große XML-Files.

Style-Sheets

CSS (Casading Style Sheets)

CSS ist ein vom W3-Consortium definiertes, einfaches Format für Style-Sheets für die Darstellung von HTML- und XML-Dokumenten.

DSSSL (Document Style Semantics Specification Language)

DSSL ist eine sehr mächtige und daher auch sehr komplexe Sprache für die Spezifikation der Darstellung von SGML-Dokumenten.

XSL (Extensible Style Language)

Mit XSL wird ein Style-Sheet definiert, das angibt, wie der in einem XML-Dokument definierte Inhalt vom Web-Browser oder von anderen Programmen dargestellt werden soll.
XSL ist mächtiger als CSS und DHTML:

Darstellung in Web-Browsern

Künftige Web-Browser werden XML-Files direkt am Bildschirm darstellen und am Drucker ausdrucken können, wenn mit einem Style-Sheet definiert ist, wie die einzelnen XML-Elemente dargestellt werden sollen. Erste Ansätze dafür gibt es im MS Internet Explorer Version 5 (mit einer Vor-Version von XSL Style-Sheets oder mit CSS) sowie in Netscape Version 5 und Mozilla (mit CSS Style-Sheets).

Zu diesem Zweck werden am Web-Server sowohl das XML-File mit dem Inhalt der Information als auch das XSL- oder CSS-File mit den Layout-Angaben abgespeichert - so ähnlich wie im Textsatzsystem LaTeX, wo der Inhalt im TEX-File und das Layout im STY-File definiert werden, und so wie dort hat man auch hier die Möglichkeit, den selben Inhalt wahlweise in verschiedenen Layouts darzustellen, z.B. für große und kleine Bildschirme und für Schwarz-weiß- und Farb-Drucker.

Wenn man die Informationen für alle Benutzer verfügbar machen will, also auch für diejenigen, die noch ältere Web-Browser verwenden, muss man sie am Web-Server (zusätzlich) im normalen HTML-Format zur Verfügung stellen - am besten mit einem Umwandlungsprogramm, das die XML-Files mit der Hilfe der Style-Files automatisch in Standard-HTML umwandelt. Und wenn die Informationen auch mit Handy-Telefonen und dergleichen erreichbar sein sollen, dann gleich auch noch im WML-Format.

Es gibt auch Umwandlungsprogramme, die "lockere" HTML-Files in "strenge" XHTML-Files umwandeln, damit diese mit XML-Software weiter verarbeitet oder auch durch zusätzliche Tags zu speziellen XML-Anwendungen erweitert werden können.


Ausführlichere Informationen


© Hubert Partl, ZID BOKU Wien