XML, XUL, XSLT und XPath

Jede Menge X kommen in dieser Überschrift vor. Ich erzähle hier nichts Neues, und wer schon damit was gemacht hat, wird mich vermutlich sofort korrigieren (warum hält sich bei mir eigentlich immer noch die falsche Schreibweise „korregieren“?). Kommen wir also mal zu

XML

XML kommt aus der Gegend Gemünden, Rheinland-Pfalz, Menge SGML. Vielfach wird XML als Dialekt beschrieben, allerdings ist XML „nur“ eine Untermenge von SGML. Letztendlich ist aber eigentlich jedem klar was man mit XML meint, egal ob Dialekt oder Untermenge. Wer den genauen Unterschied wissen will, kann das gerne beim W3 (http://de.wikipedia.org/wiki/World_Wide_Web_Consortium) nachlesen (XML vs. SGML).

Nunja, als XML erfunden wurde, legte man folgende Ziele für XML fest (*):

  • XML soll sich im Internet auf einfache Weise nutzen lassen.
  • XML soll ein breites Spektrum von Anwendungen unterstützen.
  • XML soll zu SGML kompatibel sein.
  • Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten.
  • Die Zahl optionaler Merkmale in XML soll minimal sein, idealerweise Null.
  • XML-Dokumente sollten für Menschen lesbar und angemessen verständlich sein.
  • Der XML-Entwurf sollte zügig abgefasst sein.
  • Der Entwurf von XML soll formal und präzise sein.
  • XML-Dokumente sollen leicht zu erstellen sein.
  • Knappheit von XML-Markup ist von minimaler Bedeutung.

(*) Im Originalwortlaut heisst es hier shall, was eigentlich sollen bedeutet. RFC 2119 sagt allerdings das shall dasselbe bedeutet wie must. In der deutschen Übersetzung steht wieder sollen. Der feine Unterschied wurde mir freundlicherweise vom W3C.DE/AT klargestellt: Wenn shall grossgeschrieben ist (SHALL), dann ist es eine zwingende Anforderung, wenn es klein geschrieben ist, dann ist es keine formale Anforderung. Also: SHALL == müssen und shall == sollen.

XML sollte also klein, schön und leicht lesbar sein. Diese Ziele wurden tatsächlich erreicht.

XSLT und XPath

Zuallererst: XSL ist nicht dasselbe wie XSLT. Deswegen definieren wir erstmal den Unterschied.

XSL

XSL ist die Extensible Stylesheet Language, d.h. die erweiterbare Gestaltungssprache. Furchtbare Übersetzung. Letztendlich definiert XSL zwei Teile:

  1. XSLT, als Sprache zur Transformierung von XML-Dokumenten
  2. XSL-FO, eine Seitenbeschreibungssprache. Diese dient dazu den exakten Aufbau einer Seite zu beschreiben, so dass diese nachher unverändert an den Drucker oder sonstige Ausgabegeräte geschickt werden kann.

Um XSLT ordentlich benutzen zu können (wir stellen uns mal ein XML-Dokument als Baum vor), muss man ja irgendie die einzelnen Äste und Zweige des Baums ansprechen können. Da die nicht auf Hans oder Georg hören, wurde „XPath“ erfunden.

XPath

XPath kann man sich vorstellen wie den Verzeichnisbaum unter *nux. /home/pennywise greift auf den Knoten pennywise zu, der an den Knoten home gehängt wurde. Es gibt noch implizit den root-Knoten, da wurde dann home dran gehängt.

Genau so kann man sich auch XPath vorstellen. Ich nehm hier mal das Beispiel aus der Wikipedia:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<dok>
  <!-- ein XML-Dokument -->
  <kap title="Nettes Dokument">
    <pa>Ein Absatz</pa>
    <pa>Noch ein Absatz</pa>
    <pa>Und noch ein Absatz</pa>
    <pa>Nett, oder?</pa>
  </kap>
  <kap title="Zweites Kapitel">
    <pa>Ein Absatz</pa>
  </kap>
</dok>

Beispiele für XPath-Ausdrücke:

  • /dok selektiert das Wurzel-Element dok
  • /* selektiert das Wurzel-Element unabhängig vom Namen (jedes wohlgeformte XML-Dokument hat genau ein Wurzel-Element)
  • /dok/kap selektiert alle kap-Elemente innerhalb eines dok Elements
  • /dok/kap[1] selektiert das erste kap-Element innerhalb eines dok Elements
  • //pa selektiert alle pa-Elemente auf allen Ebenen (Vorsicht: langsam)
  • //kap[@title=“Nettes Dokument“]/pa selektiert alle Absätze des Kapitels „Nettes Dokument“.

Jetzt können wir also auf ein XML-Dokument zugreifen, fangen wir an mit dem transformieren:

XSLT

Auch hier will ich nichts neues erfinden und verweise einfach auf die Wikipedia.

XUL

Und was hat XUL damit zu tun? Nun, XUL, XML User Interface Language, wird z.B. benutzt um den Firefox anzuzeigen. Dieser ist komplett in XUL gefertigt. Bevor ich in meinem nächsten Post mit weiteren Begriffen um mich schmeisse, langt das erstmal.