XML-Daten

XML-Daten

Zielgruppe sind StudentInnen und ambitionierte Informatik-Amateure

Grundkenntnisse der Informatik werden vorausgesetzt, solche von HTML oder SVG sind vorteilhaft.


XML-Daten

Die Koordinaten jedes einzelnen Punktes werden nach diesem Muster z.B. für einen Punkt P(10,12) codiert:
<p>
<px> 10 </px>
<py> 12 </py>
</p>


Text-Datei xy_demo.xml


XML 'Programmiersprachen'

Mit XML kann man sogar 'Programmiersprachen' formulieren. Dieser Begriff ist umstritten, man kann jedenfalls in XML-Dokumenten auch typische Programm-Elemente wie Variable, Verzweigungen, Schleifen usw. codieren.

Praktische Beispiele sind → HTML (Webseiten), → SVG (Objekt-Grafik), → MathML (Formel-Satz) und → XSL (Umwandlung von XML-Daten, Beispiele auf dieser Seite).


Zahlen

Zahlen werden nicht binär codiert, sondern als Text (String) angegeben, d.h. als Folge von Ziffern-Zeichen.

Als Dezimal-Trennzeichen für Gleitkomma-Zahlen wird immer ein Punkt verwendet, nicht der (nur) im deutschen Sprachraum verwendete Beistrich.

Binäre Daten

wie Pixel-Bilder, Audio- oder Video-Daten sind zur Codierung mit XML wenig geeignet. In Sonderfällen kann man sie mit Base64 als Text codieren, in XML-Dateien transportieren und zur Anwendung wieder decodieren.

Ausnahme: Wenn sich eine Pixel-Grafik mit einer Formel oder mit einem Algorithmus programmieren lässt, dann kann man mit XML+XSL ein HTML-Dokument herstellen, welches mit einem darin enthaltenen Javascript-Programm + Canvas eine Pixel-Grafik erzeugt.

Verarbeitung von XML-Daten


Es gibt viele verschiedene Programme zur Verarbeitung von XML-Daten: Bekannte Beispiele sind moderne → Office-Programm-Pakete.
Mit → AJAX oder → XSL kann man aus XML-Daten Web-Produkte herstellen, die von jedem modernen Browser angezeigt werden.



XSL ist selbst Mitglied der XML-Familie und besteht daher (ebenso wie z.B. HTML, SVG, MathML) aus einfachem lesbarem Text.
Jeder moderne Browser unterstützt XSL.


XML Daten XSL Programm A HTML Tabelle XSL Programm B SVG Objekt-Grafik Die beiden nächsten Kapitel zeigen die Verarbeitung von XML-Daten mit → XSL (Extensible Stylesheet Language):
Aus den gleichen (!) XML-Daten wird von ihrem Browser je nach XSL-Programm eine ↓ HTML-Tabelle oder eine ↓ SVG Objekt-Grafik hergestellt.

Links zur Anzeige in einem eigenen Browser-Fenster:
XML-Daten
XSL-Programm A zur Erzeugung von HTML
XSL-Programm B zur Erzeugung von SVG
• Mit XML+XSL erzeugte HTML-Tabelle
• Mit XML+XSL erzeugte SVG Objekt-Grafik

Beachten sie das Kapitel ↓ XML-Quelltext, wenn sie von ihrem Browser mit RechtsKlick den Quelltext eines Beispiels anzeigen lassen.

Live-Erzeugung einer HTML-Tabelle

◀   Im blauen Rahmen wird das Produkt angezeigt, welches ihr Browser Live aus XML-Daten und einem XSL-Programm hergestellt hat.

Dazu gibt es auch andere Methoden (z.B. die Programmiersprache → PHP). Der entscheidende Unterschied:
Der Server braucht nur die rohen XML-Daten und das XSL-Programm (als statische Text-Datei) zu senden und wird daher merkbar entlastet.

Die meisten Vorteile zeigen sich bei mehrfacher Verwendung:
In diesem Fall fordert der Browser die gleich bleibenden Dokumente nicht erneut an, sondern ladet sie aus seinem Cache-Speicher: So kann man besonders sparsam die gleichen Produkte aus mehreren unterschiedlichen XML-Daten erzeugen lassen.

Bei Datenbank-Anwendungen kommt es oft vor, dass aus unterschiedlichen Daten die gleichen Produkte erzeugt werden müssen, z.B. wenn man nacheinander Geschäftsdaten aus verschiedenen Perioden anfordert.
In diesem Fall wird das (statische) XSL-Programm nur 1mal übertragen, danach nur die jeweils angeforderten XML-Daten.
Am Server entfallen alle Arbeiten, um die Daten in die gewünschte Form zu bringen.
Man braucht zur Herstellung der variablen XML-Daten nur ein einziges, relativ kleines (PHP)-Programm, welches typisch nur 1mal geladen und danach im Cache-Speicher des Servers verwendet wird.

Links zur Anzeige in einem eigenen Browser-Fenster:
• Die rohen ↗ XML-Daten
• Das verwendete ↗ XSL-Programm
• Die mit XML+XSL erzeugte ↗ HTML-Tabelle

Alternative: Erzeugung einer ↓ SVG Objekt-Grafik aus den gleichen XML-Daten.

Details zu → HTML-Tabellen

Live-Erzeugung einer SVG Objekt-Grafik

◀   Im blauen Rahmen wird das Produkt angezeigt, welches ihr Browser Live aus XML-Daten und einem XSL-Programm hergestellt hat.

Dazu gibt es auch andere Methoden (z.B. die Programmiersprache → PHP). Der entscheidende Unterschied:
Der Server braucht nur die rohen XML-Daten und das XSL-Programm (als statische Text-Datei) zu senden und wird daher merkbar entlastet.

Links zur Anzeige in einem eigenen Browser-Fenster:
• Die rohen ↗ XML-Daten
• Das verwendete ↗ XSL-Programm
• Die mit XML+XSL erzeugte ↗ Objekt-Grafik

Alternative: Erzeugung einer ↑ HTML-Tabelle aus den gleichen XML-Daten.

Man kann auch unterschiedliche Produkte aus den gleichen Daten in einer Webseite anzeigen, so wie hier Tabelle und Grafik.

Details zu → SVG Objekt-Grafik

XSL-Programme


Einige wichtige Merkmale erkennt man auch ohne XSL-Kenntnisse auf den ersten Blick:

XSL-Quelltext besteht aus einfachem, lesbarem Text

Man kann Auszeichnungs-Elemente in < > Klammern erkennen, so ähnlich wie in HTML-Quelltext. XSL ist offenbar Mitglied der → XML-Familie und nach XML-Regeln aufgebaut.


Erzeugung von HTML mit XML+XSL

◀   Links wird jenes XSL-Programm angezeigt, mit dem man aus rohen ↑ XML-Daten eine HTML-Tabelle herstellen kann, so wie im ↑ Live-Beispiel dieser Seite gezeigt.

Das Dokument muss (ohne vorherige Leerzeilen oder andere Zeichen) mit der <?xml...?> Deklaration beginnen.

Alle Elemente die mit <xsl: ...> beginnen, werden als XSL-Elemente interpretiert und wie die Anweisungen eines Programms behandelt.

Alle anderen Texte werden als Daten interpretiert, auch wenn sie wie HTML-Elemente aussehen - z.B. auch der Text <html>

Das besonders wichtige XSL-Element <xsl:output method="html"/> bestimmt den Typ des erzeugten Produkts - in diesem Fall eine HTML-(Mini)-Webseite.

Ein <xsl:for-each>-Element beschreibt eine Programm-Schleife. In diesem Fall wird die Schleife für jedes in den XML-Daten enthaltene <p>-Element 1mal durchlaufen.
Dabei werden mit <xsl:value‑of>-Elementen die Werte der <px>- und <py>-Elemente in die <td>-Zellen der Tabelle eingetragen.


Erzeugung von SVG mit XML+XSL

◀   Links wird jenes XSL-Programm angezeigt, mit dem man aus rohen ↑ XML-Daten eine SVG Objekt-Grafik herstellen kann, so wie im ↑ Live-Beispiel dieser Seite gezeigt.

Das Dokument muss (ohne vorherige Leerzeilen oder andere Zeichen) mit der <?xml...?> Deklaration beginnen.

Alle Elemente die mit <xsl: ...> beginnen, werden als XSL-Elemente interpretiert und wie die Anweisungen eines Programms behandelt.

Alle anderen Texte werden als Daten interpretiert, auch wenn sie wie SVG-Elemente aussehen.

Das XSL-Element <xsl:output method="xml"/> bestimmt den Typ des erzeugten Produkts - in diesem Fall eine SVG-Grafik.

Dieses XSL-Programm ist wesentlich umfangreicher als jenes zur Erzeugung einer HTML-Tabelle. Die Hilfslinien und die beiden Achsen mit Teilstrichen und Beschriftungen erfordern weit mehr Elemente als eine vergleichsweise einfache Tabelle.

Innerhalb der <xsl:for-each>-Schleife werden in diesem Fall <line/>-Elemente (kurze Linien-Segmente) erzeugt, deren Attribute aus den <px>- und <py>-Elementen der XML-Daten vom Programm berechnet (!) werden.


Dynamische Daten

XSL kann auf vielfältige Weise variable Daten erzeugen und an der gewünschten Stelle in das erzeugte Produkt einsetzen:

In der HTML-Tabelle werden <xsl:value-of>-Elemente verwendet, um XML-Daten einzusetzen, die auch im HTML-Produkt als Daten verwendet werden.

In der SVG-Grafik werden <xsl:attribute>-Elemente verwendet, um damit die Werte von Attributen anzugeben.



Bedingte Verzweigungen:  Im SVG-Beispiel wird ein <xsl:if>-Element verwendet. Damit kann man Programm-Teile ausführen, je nachdem, ob eine gesetzte Bedingung zutrifft oder nicht.

Schleifen:  In beiden Beispielen dieser Seite werden <xsl:for‑each>-Elemente verwendet, um die Wiederholung von Schleifen zu programmieren.

Funktionen:  Die Version XSL 2.0 bietet <xsl:function>-Elemente, mit denen man wiederverwendbare Funktionen programmieren kann.



Daher kann man mit XSL-Anweisungen die Reihenfolge der XML-Daten ignorieren und z.B. darin suchen, diese sortieren oder innerhalb eines Programms mehrfach verwenden.
Diese Vorgangsweise unterscheidet XSL wesentlich von klassischen Programmiersprachen und erfordert diesen gegenüber einige Änderungen der Programm-Logik.

XML-Quelltext


Die MSIE und Edge-Browser zeigen auf Anforderung nicht den XML-Quelltext an, sondern den vom Browser selbst erzeugten HTML-Code, der normalerweise weder angezeigt noch gespeichert sondern intern verarbeitet wird.

  Dieser Unterschied kann bei wenig erfahrenen EntwicklerInnen zu schwerwiegenden Missverständnissen führen !


Wenn man den Original XML-Quelltext anzeigen will, dann verwendet man ein beliebiges modernes Browser-Programm.
Wenn man (z.B. zum Debuggen) wissen will, welches Zwischenprodukt ein Browser intern aus XML+XSL erzeugt, dann kann man dazu den MSIE- oder Edge-Browser verwenden.