Aktuelle Remote-Seminare mit Durchführungsgarantie: Noch freie Termine im Dezember! Termine: 07.12.-09.12.2020, 22.03.-24.03.2021, 07.06.-09.06.2021, 06.09.-08.09.2021, Termin nach Wunsch, noch in Dezember 2020 möglichXML Einführung und Grundlagen Termine: 25.03.2021, 10.06.2021, 09.09.2021XML - der professionelle Überblick Termine: 29.03.-01.04.2021Einstieg in die Programmierung Termine: 14.12.-16.12.2020, 07.04.-09.04.2021XML, XSLT, XPath, XSL-FO Einführung Termine: Termin nach Wunsch, noch in Dezember 2020 möglichEinstieg in C#.NET Termine: 11.01.-13.01.2021, 26.05.-28.05.2021, 27.09.-29.09.2021, Termin nach Wunsch, noch in Dezember 2020 möglichVB.NET für Visual Basic-Programmierer Termine: Termin nach Wunsch, noch in Dezember 2020 möglichC#.NET für Fortgeschrittene Termine: 08.03.-10.03.2021, 19.07.-21.07.2021, 23.08.-25.08.2021, Termin nach Wunsch, noch in Dezember 2020 möglichXML Grundlagen, XSL-FO, SVG, DocBook, DITA Termine: Termin nach Wunsch, noch in Dezember 2020 möglichJava Grundlagen Termine: Termin nach Wunsch, noch in Dezember 2020 möglich, 29.03.-01.04.2021C++ für Programmiereinsteiger Termine: 16.03.2021, Termin nach Wunsch, noch in Dezember 2020 möglichXProc Grundlagen Termine: 23.11.-25.11.2020, 25.01.-27.01.2021, 12.04.-14.04.2021, 26.07.-28.07.2021, Termin nach Wunsch, noch in Dezember 2020 möglichPython für Programmiereinsteiger Last-Minute-Seminare, noch freie Plätze XML Einführung und Grundlagen07.12.-09.12.2020 XML, XSLT, XPath, XSL-FO Einführung14.12.-16.12.2020

XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



XML

XML

XML

➪ XML ist eine erweiterbare, flexible, stukturierte Markup-Sprache, die in unterschiedlichen Bereichen zum Einsatz kommt, etwa bei Transformation zu HTML, XML, Text, SVG, RTF, PNG, TIFF, PDF.

Auf dieser Seite:

pic/XMLBasics1.png

Was ist das für eine Sprache,

XML: erweiterbar, flexibel

Zunächst ist XML eXtensible, also eine erweiterbare Markup Language. Sie besteht ausdrücklich nicht aus einer endlichen Menge von einigen Dutzend Schlüsselwörtern, die man (in diversen Programmiersprachen) kennen muss, um Code schreiben zu können, den der PC dann ausführt. Sondern XML ist erweiterbar. Potenziell können unendlich viele Begriffe definiert werden, in den unterschiedlichsten Sprachen, Zeichensätzen und Schreibweisen. Die einzige Bedingung ist, einige wenige grundlegende Anforderungen einzuhalten.

Zweitens handelt es sich um eine äußerst flexible Markierungssprache, die wohlgeformte, strukturierte Daten definiert und obendrein eine präzise Zuordnung zu einem fachlichen Kontext, auch mit Versionsunterschieden erlaubt. XML zieht seine Effizienz jedoch aus einer breiten Unterstützung durch andere Technologien.

XML: Konsequente Trennung von Daten und Funktionalität

Betrachten Sie XML als reines Datenformat, so finden Sie (wie bei diversen anderen Datenformaten) eine konsequente Trennung von Daten und ihrer Präsentation. Mehr noch: in XML-Technologien finden Sie eine konsequente Trennung der Daten von deren Strukturdefinition und Auswertung.

Interessanter wird der Unterschied bei der Funktionalität zahlreicher XML-Technologien. Um das deutlicher zu machen, möchte ich zunächst auf das Konzept der objektorientierten Programmierung hinweisen, wie sie in Java oder C#.NET gelebt wird. Von zentraler Bedeutung ist hier die Datenkapselung: Die eigentlichen Daten werden streng geschützt, ein lesender oder schreibender Zugriff ist nur mittelbar über Getter- und Setter-Methoden möglich. Um die gekapselten Daten herum finden Sie eine eine m.o.w. umfangreiche, erweiterbare Funktionalität.

Betrachten Sie XML als deklarativ-funktionale Programmiersprache der 4. Generation, so stellen Daten gekapselte Funktionalität dar. Nehmen Sie als Beispiel. Um etwa die Summe aller Zahlen von 1 bis 10 zu berechnen, rufen Sie ganz einfach die XPath-Funktion auf. Es spielt keine Rolle, ob die sum-Funktion letztlich in Java, C#.NET, C/C++, Python, javascript, überhaupt objektorientiert oder in Assembler geschrieben ist, ob eine for- oder while-Schleife oder ein rekursiver Aufruf dahintersteht.

XML: Hohe Flexibilität

Dabei kann XML sehr schwach strukturiert (dokumentzentriert: Die XML-Elemente dienen zur semantischen Strukturierung des Textes, was eine maschinelle Verarbeitung erschwert), sehr stark strukturiert (datenzentriert: XML-Elemente, Attribute etc. folgen einer klaren Strukturdefinition zur effizienten maschinellen Verarbeitung), aber auch mixed content haben (semistrukturiert: XML-Dokumente als Mischung aus starker und schwacher Strukturierung; die Ansätze zur effizienten Auswertung sind hier andere als bei Datenzentrierung).

Die vorliegende Arbeit hat ihren Schwerpunkt auf datenzentrierten Dokumenten. XML ist hier nie Selbst- oder Endzweck, sondern Teil einer Verarbeitungskette: Immer ist ein Folgeprogramm nötig, das mit der jeweiligen XML-Datenstruktur umzugehen weiß. Das mag ein Webbrowser sein, der skalierbare Vektorgrafiken (SVG, eine Spezialform von XML) anzeigt. Ebenso kann es ein Systemprogramm sein, das eine in XML definierte System- oder Serverkonfiguration auswertet. Auch kann es sich um ein in Java, C#.NET, VisualBasic.NET, C++ oder in einer anderen Sprache geschriebenes Programm handeln, das in XML definierte Prozesse schrittweise abarbeitet.

Die Struktur der in XML vorliegenden Daten und die Programme, die sie auswerten, müssen also Hand in Hand gehen. XML-Datenstrukturen, die ein auswertendes Programm nicht verarbeiten kann, sind wirkungslos.

Die Programme folgen unterschiedlichen Verarbeitungsmodellen. SAX verarbeitet XML als sequenziellen Datenstrom und hält für bestimmte Ereignisse spezielle callback functions bereit. Das sehr speicherintensive DOM betrachtet XML dagegen auf der Baumstruktur und gewährt wahlfreien Zugriff mit Manipulationsmöglichkeiten. Daneben stehen noch die Pull-API (sequenzielle Verarbeitung mit Iterator) oder die Verarbeitung auf Byte-Ebene bereit. Häufig werden Objekte in XML-Dokumente umgewandelt (Serialisierung) oder umgekehrt (marshalling); siehe JAXB oder XML-Schema-Definition-Toolkit in .NET.

Trotzdem ist es nicht notwendig, die interne Logik jener Programme, die XML-Dokumente auswerten, zu kennen, um XML-Dokumente schreiben zu können, die das Programm auswerten kann. Es reicht aus, klare Vorgaben hinsichtlich der Struktur und Detailtypen der zu übermittelnden Daten verfügbar zu haben. Hier helfen diverse Standards weiter, die eine Strukturdefinition der XML-Dokumente erlauben, unter anderem DTD und XML-Schema (XSD).

XML-Schema erlaubt, die grundsätzlich extrem gestaltungsflexiblen Möglichkeiten von XML-Dokumenten auf eine endliche Anzahl zulässiger Element- und Attributnamen einzugrenzen, verbunden mit einer begrifflichen Zuordnung zu bestimmten Namespaces. Auf diese Weise wird eine Datenstruktur definierbar, die von Folgeprogrammen ausgewertet werden kann. Es besteht die Möglichkeit einer Vorprüfung (Validierung), ob das jeweilige XML-Dokument diesen Vorgaben entspricht; falls nicht, kann die Weiterverarbeitung gestoppt werden.

Freilich kommt es recht häufig vor, dass die verfügbaren Daten in einer Struktur vorliegen, die die Folgeprogramme nicht auswerten können. Dann wird eine Konvertierung erforderlich. Hier hilft XSLT, ab XSLT 2.0 auch dann, wenn die ursprünglichen Daten gar nicht in XML vorliegen, sondern beispielsweise in Textformaten wie CSV.

XSL ist selbst auch ein XML-Dokument, jedoch mit einem exakt definierten Aufbau sowie einer Reihe klar definierter Schlüsselbegriffe. XSL bietet (in Kombination mit XPath) sehr effiziente Ansätze zur Transformation vorliegender Daten in andere Strukturen.

XSL und XPath bieten effiziente Möglichkeiten zur Transformation von (strukturierten) XML-Dokumenten in diverse Zielformate, z.B. HTML, XML, Text, SVG, RTF, PNG, TIFF, PDF und andere mehr. Dabei können mehrere XML-Quelldokumente ebenso berücksichtigt werden wie mehrere Ausgabedokumente.

Grundvoraussetzung für effizientes Programmieren mit XSL ist, dass sowohl die Struktur des XML-Quelldokuments als auch die Struktur des Zielformats zweifelsfrei klar ist. Während das XML-Inputdokument die (hoffentlich) klar strukturierten Daten liefert, stehen in XSL/XPath jene Programmieranweisungen, die die Struktur des Quelldokuments in die gewünschte Zielstruktur konvertiert. Das Kind der Ehe von XML und XSL ist das gewünschte Dokument.

wg / 25. Juli 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/_01_Basics_XML_Uebersicht.html