XML, DTD, XSD, XSL, XSLT, XSL-FO und XPath im Überblick

XML, DTD, XSD, XSL, XSLT, XSL-FO und XPath im Überblick – Eine kleine Orientierungshilfe über die Datentypen.

Autor Alex Kereszturi
Datum 04.07.2017
Lesezeit 8 Minuten

Kürzlich ist mir im Kurs «Extensible Markup Language (XML)» doch tatsächlich folgendes passiert: Auf meine Frage, was die Kursteilnehmenden denn mit ihrem Grundlagenwissen anfangen wollen, das sie sich während des Kurses aneignen werden, erhielt ich …

  • … einmal die Antwort, dass man unbedingt wissen müssen, wie man mit DTDs arbeitet …
  • … einmal die Antwort, dass man sich für XSL interessiere …
  • … und dass man mal etwas von XSL-FO gehört habe …
  • … einmal die Antwort, dass man sich zum Thema XSD weiterbilden wolle …

und

  • … einmal die Antwort, dass man total verwirrt sei ob der vielen Abkürzungen in den vorhergehenden Antworten, da man den viel gerühmten Überblick noch gar nicht habe.

Der ersten Person konnte ich sagen, dass sie sich bereits am Abend nach dem Kurs mit DTDs auskennen werde. Den nächsten beiden Antwortenden habe ich die entsprechenden Kurse empfohlen:

Für die letzte Person – und alle Leser dieses Blogbeitrags – habe ich mir die Zeit genommen, das Zusammenspiel zwischen all den Abkürzungen folgendermassen zu erklären.

Erst einmal XML

XML ist die Abkürzung für eXtensible Markup Language und zeichnet sich durch folgende drei Eigenschaften aus:

  • Es beinhaltet Daten
  • Diese sind strukturiert und hierarchisch
  • Sowie in Textform gespeichert

Wenn ich beispielsweise den Inhalt meines Estrichs als XML darstellen möchte, könnte das in etwa so aussehen:

Datentyp-xml

In meinem Estrich befinden sich also zwei Kisten. In der braunen sind drei Dinge und in der weissen vier. Sogar das Gewicht der einzelnen Dinge (hier in Gramm notiert) lässt sich aus den XML-Daten herauslesen.


Merksatz:

«XML beschreibt strukturiert das, was wir haben.»


DTD: Herausfinden, ob man es «richtig» gemacht hat oder nicht

Haben Sie den Tippfehler im XML-Dokument bemerkt? Einmal habe ich «gewichtt» mit zwei «t» geschrieben. Das ist natürlich total unpraktisch, wenn das XML-Dokument elektronisch weiterverarbeitet werden soll.

Doch wie finde ich solche Fehler? Dazu holen wir DTD (Document Type Definition) mit ins Boot!

DTDs sind nämlich sozusagen die Baupläne für XML-Dokumente. Diese Baupläne – oder auch Bauvorschriften – beinhalten Anweisungen, welche Elemente in einem XML-File überhaupt vorkommen dürfen, wie sie ineinander verschachtelt sein dürfen und welche sogenannten Attribute sie haben dürfen, können oder müssen.

Für unser Estrich-Beispiel könnte die DTD folgendermassen aussehen.

<!ELEMENT estrich (kiste*)>
<!ELEMENT kiste (ding*)>
<!ELEMENT ding (#PCDATA)>
<!ATTLIST kiste farbe CDATA #REQUIRED>
<!ATTLIST ding gewicht CDATA #REQUIRED>

Selbst als blutiger Anfänger kann man aus den ersten drei Zeilen erraten, dass in einem ELEMENT «estrich» «kiste» drin sein kann, im ELEMENT «kiste» «ding» drin sein kann und im ELEMENT «ding» irgendwas Informatisches halt, das wir hier nicht unbedingt zu verstehen brauchen.

Und wenn ich hier noch erkläre, dass «ATTLIST» für Attribute-Liste steht und ein Attribut eine Eigenschaft eines Elements ist, lassen sich auch die letzten beiden Zeilen deuten: «kiste» hat das Attribut «farbe» und «ding» das Attribut «gewicht».

Wenn man das XML-File von oben mit dieser DTD überprüft, meldet ein Validierungstool fleissig:

Man wird also gewarnt, dass das Element «ding» kein Attribut «gewicht» hat und dass es keine Deklaration für das Attribut «gewichtt» gibt. Daraus abzuleiten, dass man sich vertippt hat, dürfte dann ein Leichtes sein.


Merksatz:

«DTD definiert den einfachen ‹Bauplan› einer XML-Datei.»


OK, und was ist dann XSD?

XSD steht für «XML Schema Definition». Eine Schema-Definition ist von der Idee her eigentlich dasselbe wie eine DTD – einfach mit unheimlich praktischen Vorteilen. Hier einige davon:

  • Eine XSD-Datei ist (im Gegensatz zu einer DTD) ebenfalls in XML geschrieben
  • In XSD lassen sich mehr Datentypen definieren
  • In XSD lassen sich Einschränkungen definieren

Um das etwas zu erläutern, liesse sich beispielsweise der Wert des Attributs «gewicht» auf eine Ganzzahl zwischen 0 und 2000 einschränken. Mit einer DTD geht das nicht.


Merksatz:

«XSD definiert den detaillierten und
komplexen ‹Bauplan› einer XML-Datei.»


Mit den Daten etwas anstellen

Meistens will man ja mit den Daten etwas anstellen. Mich z.B. würde es interessieren, wie schwer alle meine Kisten zusammen sind und das Ergebnis auf einer A6-Postkarte oder einer Website ausgeben. Zeit also, dass XSL (Extensible Stylesheet Language) ins Spiel kommt.

Unter dem Begriff XSL vereinen sich drei Unterbegriffe:

  • XSL-FO: sozusagen das, was man bei den Druckereinstellungen unter «Seiteneinrichtung» finden würde
  • XPath: die «Finde bitte etwas in einem XML-Dokument»-Sprache
  • XSLT: wobei das «T» für «Transformation» also «Umwandeln» steht

Kurz zu den einzelnen Begriffen je ein Beispiel.

Ein XSL-FO-Beispiel

Mit den XSL Formatting Objects (kurz XSL-FO) legt man alles fest, was es für den Output braucht – ob auf Papier, auf Bildschirm oder sogar via Vorlese-Software spielt dabei keine Rolle. Unter anderem definiert man mit XSL-FO, wie eine Seite aufgeteilt und wie gross sie sein soll.

Datentyp-xml-04

Die Angaben bei «page-width» und «page-height» zeigen schön, wie hier die Seitengrösse einer Masterseite (simple-page-master) definiert wird.

Ein XPath-Beispiel

Das «Path» in «XPath» kann man gut mit «Pfad» ins Deutsche übersetzen. Und tatsächlich beschreibt ein XPath-Ausdruck so etwas wie den Pfad zu den gewünschten Daten im XML-File. Beispielsweise «findet» folgendes XPath alle «gewicht» von «ding» in «kiste» in «estrich»*:

//estrich/kiste/ding/@gewicht

* zeigen Sie diesen Satz bitte nicht meiner ehemaligen Deutschlehrerin!

Ein XSLT-Beispiel

Mit Hilfe von XSLT lässt sich ein XML in etwas anderes transformieren. Zum Beispiel in HTML. Ich möchte wissen, wie schwer alle Dinge in den Kisten in meinem Estrich zusammen sind und das im Browser ausgeben. Dazu schreibe ich (nebst anderem) folgendes in ein XSL-File:

Datentyp-xml-05

Man beachte den XPath-Ausdruck von oben, der von einem «sum()» umgeben ist, um die Summe aus allen Werten zu bilden. Mein Browser spuckt brav die Zahl 2610 aus.

Im Überblick

Da ich schon lange wieder einmal die SmartArt-Funktionen von Microsoft Word verwenden wollte, hier noch die ganzen Begriffe im grafischen Überblick:

Datentyp-xml-06

Wenn Sie jetzt vor lauter Abkürzungen den sprichwörtlichen «Wald» nicht mehr sehen. Machen Sie sich nichts draus! Mir geht es mehrmals am Tag so.

Kurse zu XML, DTD, XSD & Co.

In unseren Kursen zu XML erlangen Sie Grundlagen sowie vertiefte Kenntnisse dieser Auszeichnungssprache. Mit Ihrem Wissen über XML als Basistechnologie sind Sie auch vorbereitet für zahlreiche auf XML aufbauende Technologien wie z.B. Webservices.

In unseren Kursen zu XML erlangen Sie Grundlagen sowie vertiefte Kenntnisse dieser Auszeichnungssprache. Mit Ihrem Wissen über XML als Basistechnologie sind Sie auch vorbereitet für zahlreiche auf XML aufbauende Technologien wie z.B. Webservices.


Über den Autor

Alex Kereszturi

Alex Kereszturi ist Web Solution Developer der ersten Stunden, Trike-Fahrer und Hobby-Psychologe. Als einer der ersten «Webpulisher SIZ» und als «Adobe Certified Instructor» entwickelt er seit seinem 15. Lebensjahr Lösungen für das WWW, Mobilgeräte und andere Lebenslagen. Er ist seit bald 25 Jahren Kursleiter bei Digicomp, liebt das Sein in der Natur und setzt bei seinen Schulungen auf einen guten Mix aus Information, Praxisübungen und Unterhaltung. Als Inhaber und CEO führt er die Smilecom GmbH als ein kleines aber feines Software-Entwicklungs-Unternehmen und immer wieder ein turbulentes Familienleben mit drei Töchtern.