XML: Difference between revisions

From Wiki RB4
 
Line 108: Line 108:


Encoding kann u.a. sein:
Encoding kann u.a. sein:
* ISO-8859-1
* ISO-8859-1 // ISO-Kodierung für westeuropäische Sprachen
* UTF-8
* UTF-8 // internationaler Kodierung auf Basis der ISO/IEC-10646-Norm mit mindestens 8 Bit Zeichenbreite
   
   
In der nächsten Zeile gibt es eine weitere sehr wichtige Einstellung zu erledigen, wenn man ein XSL- oder CSS-File benutzt. Man muss noch die Datei angegeben, in der sich der Style Sheet befindet. Diese sollte die Endung XSL bzw. CSS haben, was aber nicht zwingend nötig ist. Diese beiden Tags sind selbstständig, das heißt sie müssen nicht mehr geschlossen werden.  
In der nächsten Zeile gibt es eine weitere sehr wichtige Einstellung zu erledigen, wenn man ein XSL- oder CSS-File benutzt. Man muss noch die Datei angegeben, in der sich der Style Sheet befindet. Diese sollte die Endung XSL bzw. CSS haben, was aber nicht zwingend nötig ist. Diese beiden Tags sind selbstständig, das heißt sie müssen nicht mehr geschlossen werden.  

Latest revision as of 19:03, 20 September 2018

Einführung[edit]

Da es bei Textverarbeitungsprogrammen um die Steuerung von visuellen Attributen geht, spricht man in diesem Fall auch von Visual Markup. Im Gegensatz dazu konzentriert sich das Generic Markup darauf, Auszeichnungen in den Text einzubringen, die eine Aussage über die Bedeutung der markierten Textstelle machen (»logische« oder »semantische« Auszeichnungen). Anstatt beispielsweise Zitate als »kursiv« zu markieren, ist es sinnvoller, sie als »Zitat« zu markieren. Überschriften bekommen nicht mehr die Auszeichnung »groß und fett«, sondern die Auszeichnung »Überschrift«.

Ein wesentlicher Meilenstein in der Umsetzung dieser Ideen war die Entwicklung der Standard Generalized Markup Language (SGML). Die Verwandtschaft zwischen XML und SGML besteht darin, dass XML eine Teilmenge von SGML ist. XML wird durch das World Wide Web Consortium definiert.

Zu den Vorteilen von XML zählen:

  • Erweiterbar

In HTML sind beispielsweise alle Tags vorgegeben.

  • Offenes Format

Der XML-Standard ist offen zugänglich. Im Gegensatz zu proprietären Formaten eines bestimmten Herstellers, sind XML-Daten unabhängig von einem einzelnen Softwareprodukt oder -anbieter.

  • System-unabhängig

XML ist unabhängig von einem Betriebssystem oder von einem Computersystem (Hardware).

  • Medienneutral

XML-Dokumente sind unabhängig von einem Ausgabeformat oder -gerät (Papier, Bildschirm usw.).

  • Anpassbar

XML ist kein starres Format, sondern kann (muß) auf die jeweiligen Bedürfnisse zugeschnitten werden. (»Enabling Standard«)

Zu den Nachteilen gehören:

  • Hoher Initialaufwand

Der Einsatz verlangt üblicherweise nach der Analyse der Dokumentstruktur, dem Entwurf der DTD und der Erstellung einer Layoutbeschreibung. Je nach Umfang der Anwendung ist dabei die Zuhilfenahme von Experten sinnvoll oder notwendig.

  • Laufende Entwicklung

Zum Teil sind technische Realisierungen noch nicht vorhanden.

Eine XML Datei ist wohlgeformt, wenn:

  • am Anfang die XML Deklaration steht
  • es mindestens ein Datenelement gibt
  • es gibt ein Datenelement, dass alle anderen enthält

Eine XML Datei ist gültig, wenn:

Dokumenttypen[edit]

Neben der Grundidee Generic Markup ist ein wichtiges Konzept von XML der Dokumenttyp. Die Eingabe eines Dokumententyps ist optional. Der Dokumenttyp beschreibt eine Klasse von Dokumenten, die sich in ihrem strukturellen Aufbau gleichen. Ein allgemein bekanntes Beispiel ist der Dokumenttyp »Brief«. Verschiedene Briefe sind meistens identisch oder zumindest sehr ähnlich strukturiert. Sie beginnen mit der Adresse des Absenders, gefolgt von der Adresse des Empfängers. Sie besitzen eine Ort- und Datumsangabe, eine Anrede, den eigentlichen Text des Briefes sowie eine abschließende Grußformel. Ein anderer vertrauter Dokumenttyp ist das »Buch«, oder etwas spezieller das »Fachbuch«. Der grobe Aufbau ist dabei: Titelei, Hauptteil, Anhangteil. Die Titelei enthält den Buchtitel, das Impressum, das Vorwort und ggf. eine Widmung und eine Danksagung. Der Hauptteil besteht aus einer Folge von Kapiteln. Kapitel sind auch im Anhangteil zu finden. Das diese anders dargestellt werden als Kapitel im Hauptteil (Kapitelüberschriften im Anhang sind meist mit einem Buchstaben versehen, während Kapitel im Hauptteil durchnumeriert werden) spielt für die Strukturierung keine Rolle (Generic Markup). Des weiteren gibt es im Anhangteil oft besondere Abschnitte wie etwa ein Glossar, ein Literaturverzeichnis und ein Stichwortverzeichnis.

Um zu erläutern, was unter einem Dokumenttyp zu verstehen ist, wird zunächst erläutert, was ein Elementtyp ist. Man sagt, dass dies ein Element ist:

Lola rennt.

Das Element besteht aus einem Start-Tag, dem Inhalt des Elements und einem End-Tag. Auch dies ist ein Element:

Ist ja gar nicht wahr.

Es handelt sich um zwei Elemente mit auffallenden Ähnlichkeiten. Der Start-Tag und der End-Tag sind gleich. Deswegen sagt man, dass beide Elemente demselben Elementtyp angehören.

Im Vergleich zum Brief erscheint die Struktur des Dokumenttyps Buch sehr viel variantenreicher. Komponenten wie Vorwort, Widmung und Danksagung sind optional. Die Anzahl der Kapitel im Hauptteil darf nicht von vornherein festgelegt sein. Und ob es ein Glossar und ein Literaturverzeichnis gibt, sollte ebenfalls dem Autor überlassen bleiben. Die formale Definition eines Dokumenttyps in XML muss die Flexibilität besitzen, die Gemeinsamkeiten festzulegen, aber zugleich genügend Spielraum für ein konkretes Dokument zu lassen. So würde man wohl kaum sagen, dass ein Buch mit fünf Kapiteln ein Vertreter eines anderen Dokumenttyps ist, als ein Buch mit acht Kapiteln. Fehlt jedoch einem Buch der Titel, so würde man wohl von einem (strukturellen) Fehler sprechen.

Die Dokumenttypdefinition muss also den Titel als zwingenden Bestandteil enthalten, die Anzahl der Kapitel aber offen lassen. Zum Beispiel wird festgelegt, welche Elementtypen in den Dokumenten eines bestimmten Dokumenttyps verwendet werden können. XML bietet nun die Möglichkeit, solche Dokumenttypdefinitionen (abgekürzt DTD) für beliebige Arten von Dokumenten zu formulieren. Die DTD kann sowohl in

  • externer Form vorliegen und vom XML-Dokument referenziert
<?xml version="1.0"?>
<!DOCTYPE <NAME> (PUBLIC|SYSTEM) "-//MeineFirma Solutions//DTD EMail V 1.0//DE"
  "http://www.example.org/dtds/email.dtd">

Bei SYSTEM liegt die DTD auf dem spezifizierten Rechner, bei PUBLIC folgt in Hochkommata und -// der Name des Veröfftlichers, dann die DTD und die Sprache. Danach u.U. der tatsächliche Speicherort.

  • werden oder sie befindet sich (gesondert ausgewiesen) innerhalb des XML-Dokuments:


<?xml version="1.0"?>
<!DOCTYPE Gruss [
  <!ELEMENT Gruss (#PCDATA)>
]>
<Gruss>Hallo Jupiter!</Gruss>

Die bekannteste DTD ist die HTML-DTD. Sie definiert die Hypertext Markup Language (bisher noch auf Grundlage von SGML, in Zukunft auf Basis von XML). Leider ist HTML ein schlechtes Beispiel für die Umsetzung der Generic Markup Idee. Auf Grund des breiten Einsatzgebietes gibt es nur wenige logische Auszeichnungen, die naturgemäß nicht textspezifisch sind. Sogar visuelle Auszeichnungen (z. B. »b« für bold und »i« für italic) sind vorhanden. Für die Gliederung eines Textes bietet HTML lediglich Überschriften, jedoch keine Elemente wie etwa »Kapitel«, »Abschnitt«, »Unterabschnitt« usw. Versucht man anhand von Beispielen zu erkennen, welcher Dokumenttyp von HTML definiert wird, wird man einen Typ nur schwer erkennen können: HTML-Dokumente sind Homepages, wissenschaftliche Abhandlungen, Kochrezepte, Bücher, Gedichte, Veranstaltungskalender, Börsenkurse, virtuelle Warenhäuser, usw. Kurz gesagt: HTML-Dokumente sind keine Dokumente eines einzigen Typs. Deshalb ist die HTML-DTD so allgemein und enthält keine textspezifischen Metadaten. XML wird diesen Mangel dadurch lösen, dass jeder eine eigene DTD entwerfen kann, die für die eigenen Daten maßgeschneidert ist.

XML Schemata[edit]

Der Nachteil von DTDs ist, dass die Syntax nicht XML-konform ist. Ein Ansatz dieses Problem zu lösen sind die sogenannten XML-Schematas. XML Schema, abgekürzt XSD, ist eine Empfehlung des W3C zum Definieren von Strukturen für XML-Dokumente. Anders als bei den klassischen XML-DTDs wird die Struktur in Form eines XML-Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen unterstützt.

Interpretation und Darstellung von XML-Dateien[edit]

Zwei Fragen drängen sich dabei auf:

  • Sie schreiben einen Text über die musikalische Entwicklung Ihres bevorzugtes Komponisten. Woher weiß der Browser, wie Auszeichnungen wie <instrument>, <tonart> oder <tempo>, die zwar hervorragend Ihren Text beschreiben, dem Browser aber vollkommen unbekannt sind, am Bildschirm darzustellen sind?
  • Welche Aussagekraft hat eine Auszeichnung wie <titel>? Es kann sich um den Titel eines Dokumentes handeln, um einen akademischen Titel einer Person oder um den Titel eines Musikstücks.

Die erste Frage ist relativ leicht zu beantworten: Zur Darstellung (auf dem Bildschirm, auf Papier oder auch als Sprachausgabe) sind Formatierungsanweisungen nötig. Meist spricht man hier von style sheets. Für HTML hat das World Wide Web Consortium (W3C) die Cascading Style Sheets (CSS) entwickelt. Für SGML und XML gibt es die Document Style Semantics and Specification Language (DSSSL), die als Norm von der ISO im Jahre 1996 verabschiedet wurde. Momentan (Frühjahr 1999) arbeitet das W3C noch an der Extensible Style Language (XSL), die speziell für XML-Dokumente geeignet ist. Die zweite Frage ist nicht ganz so direkt zu beantworten. Es macht natürlich keinen Sinn, in Zukunft eine unendliche Anzahl von DTDs zu entwerfen, die jeweils neue Elementnamen definieren. Dokumenttypen sind nur dann von Nutzen, wenn es im Verhältnis zu der Anzahl der Dokumente nur eine kleine Anzahl an DTDs gibt. Viele Vorteile von XML hängen damit zusammen, dass man einen Arbeitsschritt mit Bezug auf die DTD durchführt und dass das Ergebnis auf alle Dokumente dieses Typs angewendet werden kann. Zum Beispiel beziehen sich bei der Formatierung die Anweisungen zur Darstellung auf Elementnamen, die in der DTD deklariert werden. Eine einmal geschriebene Formatierungsfunktion kann dann für alle Dokumente, die gemäß dieser DTD ausgezeichnet sind, benutzt werden. So kann es sich beispielsweise lohnen, eine DTD für eine Buchreihe oder das gesamte Programm eines Verlags zu entwerfen. Es wird dann einmal der Produktionsablauf für diese DTD implementiert und fortan können beliebig viele Manuskripte ohne Mehraufwand verarbeitet werden. Im Gegensatz dazu wäre eine DTD je Buch sicher sinnlos und zu aufwendig.

XML tritt meistens in 2 Dateien auf. Die XML-Datei enthält die Textinformationen, die von Tags eingeschlossen sind, deren Namen Sie selber vergeben können. Im XSL-File bestimmen Sie wie die Textinformationen aus dem XML-File dargestellt werden sollen. Der Vorteil von XML ist das Sie ein XSL-File für mehrere XML-Dateien verwenden können. Das ist vor allem von Vorteil, wenn Sie viele Seiten machen wollen, deren Aussehen aber einheitlich bestimmt werden soll. Wenn man bei HTML die Farbe des Textes auf 20 Seiten ändern will, muss man dies auf jeder einzeln machen. Bei XML muß man bloß das eine XSL-File ändern, um die Änderung auf allen Seiten zu bewirken. Ein einheitliches Bild ist gerade bei größeren Produktlandschaften interessant.

Jedes Dokument wird in drei Teile zerlegt: Inhalt, Struktur und Layout. Eine XML-Datei, die XML konform ist, nennt man wohl geformt (well-formed), eine XML-Datei, der eine DTD zugeordnet ist und deren Inhalt dazu passt, nennt man gültig (valid).

XML als Datenaustauschformat[edit]

Schließlich soll ein Aspekt von XML nicht unerwähnt bleiben, der zwar nicht mehr viel mit Textverarbeitung selbst im weiteren Sinne zu tun hat, der aber einen großen Anteil am Erfolg von XML hat bzw. haben wird. Die Möglichkeit, Dokumenttypen formal zu definieren, bedeutet auch, daß Dokumente automatisch (das heißt von einem Programm, dem »Parser«) auf strukturelle Korrektheit überprüft werden können. Zusammen mit den enthaltenen Metadaten (in Form der Elementnamen) bietet sich XML damit an, Daten zwischen verschiedenen Anwendungen in einer Netzumgebung auszutauschen. Ein einfaches Beispiel sind Banktransaktionen, etwa Überweisungen. Die einzelnen Bestandteile einer Überweisung lassen sich als XML-Elemente in einer Überweisung-DTD beschreiben (Konto-Nummer, Bankleitzahl, Betrag usw.). Sollen nun die Daten eines Überweisungsvorgangs zwischen zwei Computern ausgetauscht werden, kann der Empfänger allein durch Vergleich mit der DTD verifizieren, ob alle Informationen enthalten sind. Fehlt beispielsweise der Betrag, kann das bereits beim Parsing erkannt werden. Ein anderes Beispiel ist folgende Aussage: Ich bestelle Sofies Welt von Jostein Gaarder, erschienen 1999 im DTV mit der ISBN 93038504, die in XML übersetzt wie folgt aussehen könnte:

<buch isbn=93038504>
  <titel>Sofies Welt </titel>
  <autor>Jostein Gaarder</autor>
  <verlag>DTV</verlag>
  <jahr>1999<jahr>
</buch>

Dieses zugegebenermaßen stark vereinfachte Beispiel ist in einem Punkt zutreffend: Das Interesse an XML ist besonders im Bereich Electronic Business groß. Wenn die momentane Tendenz anhält, wird XML die Grundlage für einen großen Teil des wirtschaftlichen Datenaustauschs (Electronic Data Interchange, EDI) darstellen.

XML und Datenbanken[edit]

Auch dieser Bereich ist sehr interessant, nur im Moment noch nicht ganz fertig entwickelt. Sowohl Microsoft als auch IBM arbeiten an einer Lösung zum Export von Daten aus Datenbanken, direkt in ein XML File. Hier ist es von großem Vorteil, dass man den Tags einen eigenen Namen geben kann, wie z.B. <Name> und nicht auf die vorgegebenen Tags wie bei HTML angewiesen ist, wie z.B. <H1> usw.

Aufbau einer XML-Datei[edit]

Alle sogenannten XML-processing instructions fangen mit <? an und hören mit ?> auf. Alle Tags fangen mit < an und hören mit > auf. Tag-Namen dürfen letters, digits, underscores, dots und hyphens (-), aber keine spaces enthalten, wobei tags case sensitive sind.

Ein XML-File beginnt mit der XML-Deklaration, die u.a. festlegt welche XML-Version benutzt wird.

<?xml version="1.0"?>

In dieser Definition kann auch der Zeichensatz angegeben werden, der verwendet wird bzw. in dem der XML-File encoded ist (das Gegenstück nennt sich decoden und meint das Übersetzen in den Unicode Zeichensatz). Des weiteren kann hier auch angegeben werden, ob eine Document Type Definition (kurz "DTD") existiert oder nicht. Dafür wird der Begriff "standalone" benutzt. Der Vorteil der Benutzung von DTD-Dateien liegt vor allem in der Vorgabe von Standard-Attributen, die dann automatisch eingesetzt werden.

<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" standalone="yes"?>

Encoding kann u.a. sein:

  • ISO-8859-1 // ISO-Kodierung für westeuropäische Sprachen
  • UTF-8 // internationaler Kodierung auf Basis der ISO/IEC-10646-Norm mit mindestens 8 Bit Zeichenbreite

In der nächsten Zeile gibt es eine weitere sehr wichtige Einstellung zu erledigen, wenn man ein XSL- oder CSS-File benutzt. Man muss noch die Datei angegeben, in der sich der Style Sheet befindet. Diese sollte die Endung XSL bzw. CSS haben, was aber nicht zwingend nötig ist. Diese beiden Tags sind selbstständig, das heißt sie müssen nicht mehr geschlossen werden.

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

Natürlich gibt es noch viele andere Einstellungsmöglichkeiten im Dokumentkopf.

Bevor man beginnt, muss noch ein Root-Element ausgewählt werden, also das Element, das alle anderen Elemente beinhaltet. Hier von darf es nur ein einziges geben, aber auch dessen Namen darf frei gewählt werden. Eine XML-Datei besteht aus verschiedenen Elementen, deren Namen Sie selbst wählen können und die Text beinhalten. Ein Element kann auch Attribute haben. Aus mehreren Elementen ergibt sich dann eine Struktur, die sich der Autor bereits vorher überlegen sollte. Diese Struktur beginnt mit dem Root-Element, das Ausgangspunkt für alle anderen Elemente ist und sie beinhaltet. Wichtig ist auch das jedes geöffnete Element unbedingt auch wieder geschlossen wird, da sonst sofort eine Fehlermeldung erscheint. Es muss auch darauf geachtet werden, daß die Struktur genau eingehalten wird und die geöffneten Tags an den richtigen Stellen wieder geschlossen werden, z.B.:

<?xml-version="1.0"?>
<?xml-stylesheet type="text/xsl" href="Autoren.xsl"?>
<Personen>
<Autor ID="1">  
<Vorname>Frank</Vorname>
<Nachname>Mueller</Nachname>
</Autor>
<Autor ID="2">
<Vorname>Stefan</Vorname>
<Nachname>Maier</Nachname>
</Autor>
</Personen>

In diesem Beispiel ist <Personen> das Root-Element, daß alle Elemente der Datei beinhaltet. Innerhalb des Autoren - Element gibt es zwei Autor-Elemente mit den Child Elementen Vorname und Nachname und dem Attribut ID, welches hier zur Durchnummerierung verwendet wird. Attribute werden im Elementanfangstag angegeben, deren Inhalte werden mit einem Gleichheitszeichen und in einfachen oder doppelten Anführungszeichen dargestellt. Sicherlich soll öfter mal ein Kommentar eingefügt werden, diesen fügt man zwischen das Start-Tag (s. obiges Beispiel).

Start- und Ende-Tag in einem, also ein leeres Element, werden wie folgt dargestellt:

<xxx/>

Kommentare[edit]

<!--
-->

Namespaces[edit]

Namespaces dienen dazu Konflikte zwischen tag zu vermeiden. Namespaces bilden entweder Dateninseln, wobei alle Namen nur innerhalb dieses Bereichs gelten. Mit Präfixen und der Angabe von mehreren Namespaces kann man namensgleiche Elemente unter einem Element verwenden. Namespace können geschachtelt werden. To mix namespaces the namespace is specified by the xmlns (xml name space) attribute for a tag e.g.

<element1 xmlns[:<prefix>]="<uniqueID>"> [xmlns[:<prefix>]="<uniqueID>">]
</element1>

The prefix can be empty. The uniqueID may but must not direct to a DTD, but by convention it contains an URI, which does not have to exist. The prefix is prepended to tags:

<<prefix>:element2>
</element2>

XSL (Extensible Style Language)[edit]

XSL documents are made of rules that are applied to XML documents, so its possible to transform XML to HTML. XSL hat drei Teile:

  • eine Transformationssprache (XSLT)
  • eine Sprache, um Teile von XML Dokumenten zu definieren (XPath)
  • ein Vokabular, um XML Dokumente zu formatieren.

XSLT[edit]

In der Praxis werden XML Dateien zunächst transformiert und dann formatiert. XSLT transformiert ein XML-Dokument in ein anderes bzw. ein source tree in ein result tree. In the transformation process, XSLT uses XPath to define parts of the source document that match one or more predefined templates. When a match is found, XSLT will transform the matching part of the source document into the result document. The parts of the source document that do not match a template will end up unmodified in the result document.

Aufbau einer XSL-Datei[edit]

In der XSL-Datei befinden sich die Anweisungen, wie die Elemente, die in der XML-Datei stehen, dargestellt werden. Es können auch Funktionen, wie Schleifen und Sortieren verwendet werden. Dies ist ein großer Vorteil gegenüber HTML. In der XSL-Datei kann auch noch Text geschrieben werden, der dann einfach ausgegeben wird. Dies ist besonders praktisch bei Überschriften usw. Auch das von HTML bekannte JavaScript ist verwendbar, man muss jedoch beachten, daß es auch ausgeführt wird. XSL-Dateien sind wohl geformte XML-Dateien. Der Kopf der XSL-Datei hat eine gewisse Ähnlichkeit mit einer XML-Datei, da auch sie mit der Definition der XML-Version beginnt. Auch hier ist es im Moment noch die Version "1.0". In der nächsten Zeile gibt man dann an, welchen Stylesheet man benutzt. WICHTIG Die Stylesheet-Definition muss am Ende der Datei unbedingt wieder geschlossen werden, da es sonst zum Fehler kommt.

<?xml version="1.0"?>
<xsl:stylesheet xlmns:xsl="http://www.w3.org/TR/WD-xsl">
...Stylesheet....
</xsl.stylesheet>

Eine XSL-Datei besteht aus verschiedenen Regeln. Jede Regel beschreibt, für ein Element, wie es dargestellt werden soll. Hier werden Elemente gleichen Namens zusammengefasst. Am Anfang beginnt man am Besten mit einer Regel, die alle Elemente durchlaufen, da man so nicht jedes Mal eine Regel zu schreiben braucht. Dieses Element beschreibt man mit "/". Man muss beachten, daß jedes Element erst einmal aufgerufen werden muss, damit es bearbeitet wird. Dafür wird das Tag <xsl:apply-templates/> benutzt. Dies ist immer der gleiche Kopf. Nun fangen wir mit dem sogenannten Root-Element an. Hier können wir erstmal ein Standard-Format angeben. Hier können wir auch schon die Überschrift "Vorname" und "Nachname" angeben, und mit dem Aufbau der Tabelle beginnen.

Programming[edit]

Es gibt kein standartisiertes Verfahren um auf XML-Daten zuzugreifen. Etabliert haben sich das Simple API for XML (SAX) von Microstar und das Document Object Model (DOM). Die Sprache Extensible Style Sheet Language Transformations (XSLT) lassen sich XML-Daten transformieren. Das Simple Object Access Protocol (SOAP) stellt ein auf XML basierendes Format dar, das eine Serialisierung von Methodenaufrufen, deren Ergebniswerten und Fehlermeldungen darstellt. Man hat es für Methodenaufrufe über das Web konzipiert.


Literatur[edit]