Aus dem Kurs: XSLT Grundkurs

XSLT 2.0 im Überblick – Tutorial zu XML

Aus dem Kurs: XSLT Grundkurs

XSLT 2.0 im Überblick

Schauen wir uns ab jetzt einmal das Thema XSLT in der Version 2.0 an. Zuerst einmal ein bisschen Geschichte, wollen wir zuerst einmal uns ein Überblick verschaffen zum Thema 1.0, 2.0, wie das auch bzgl. der Jahreszahl ein wenig einzuordnen ist. Fangen wir zuerst einmal damit an: XSLT 1.0 wurde im Jahre 1999 verabschiedet, hat also durchaus schon ein paar Tage auf dem Buckel. Wenn ich jetzt sage: Da ist ein Standard verabschiedet worden. Dann muss man da sprachlich immer ein bisschen aufpassen, aber verzeihen Sie’s mir, wenn ich es jetzt hier immer von Standard rede. Das W3C redet offiziell von „Recommendation“, also „Empfehlung“. Aber es ist natürlich schon doof, wenn man sich an die Empfehlungen des W3Cs nicht hält und man dann sich dann auf dem Platz, auf dem Marktplatz präsentieren möchte, deswegen: Auch wenn es sprachlich vielleicht ein wenig unpräzise ist, wenn ich jetzt hier von Standard rede, dann mein ich immer diese Recommondations. Bevor etwas vom W3C als Recommendation verabschiedet wird, gibt es davor immer eine relativ lange Dreft-Phase, eine Phase, wo man schon so eine Vorempfehlung herausgibt, ist aber quasi noch nicht endgültig verabschiedet hat. Warum erwähn ich das? Naja, weil im Jahre 2007 dann nämlich XSLT 2.0 verabschiedet wurde und bei XSLT 2.0 gab es in der Tat eine relativ lange Vorphase, wo also schon die Empfehlungen ausgesprochen worden sind und interessanterweise zwischen den Empfehlungen und den Recommendations meistens gar keine mehr so großen Unterschiede sind und das war bei XSLT 2.0 auch der Fall. Also zwischen der Dreft und der Recommendation sind eigentlich gar keine so großen Unterschiede mehr. All das erläutere ich, weil wir sind jetzt deutlich vom Jahre 2007 entfernt, aber nach wie vor wird XSLT 2.0 nicht flächendeckend unterstützt. Das ist mitunter auch für die entsprechenden Firmen durchaus im höchsten Maße blamabel, aber was anderes kann ich nicht dazu sagen, als dass dieser Standard nach wie vor nicht flächendeckend unterstützt wird. Es gibt viele Programme, die die Möglichkeit haben, XSLTs hineinzugeben und dann mit Hilfe dieser XSLTs Transformationen durchzuführen, aber diese Programme, die also von außen mit Hilfe von XSLTs angepasst werden können an die eigenen Bedürfnisse, ganz, ganz oft XSLT nur in der Version 1.0 beherrschen. Und ein besonders negatives Beispiel, meiner Meinung nach besonders negatives Beispiel ist hier die Firma Microsoft. In der Entwicklungsumgebung .Net wird nach wie vor kein XSLT 2.0 unterstützt und das ist natürlich insbesondere deswegen blamabel, weil man der Firma Microsoft an dieser Stelle jetzt unterstellen muss, dass, wenn sie XSLT 2.0 unterstützen wollen würden, sicherlich genügend Ressourcen im Hause Microsoft vorhanden wären, um eine entsprechende Software anzupassen. Da das von Microsoft hier nicht unterstützt wird, zieht das aber eben einen ganzen Rattenschwanz nach sich. Wie ich eben gerade schon erläutert habe: Auch viele Fremdapplikationen, viele Fremdprodukte, die sich eben hier auf dieses .Net-Framework verlassen, genau aus diesem Grund kein XSLT 2.0 unterstützen. Regelmäßig werde ich zu Kunden gerufen, die beispielsweise im SAP-Umfeld arbeiten und Daten von dem Kunden A bekommen, und dann die Daten weiterverarbeiten müssen, um sie beispielsweise zu Kunden B weiterleiten zu können, und da ist es auch heute noch so, dass nicht alle Produkte von SAP XSLT 2.0 unterstützen oder eben ein sehr kostspieliges Update notwendig ist. Wenn wir von XSLT 2.0 sprechen, dann reden wir in der Regel immer von dem XSLT-Transformator Saxon. Der Michael Kay hat eben diese Firma Saxonica gegründet. Dort bekommt man eben den Saxon in der aktuellen Version und der unterstützt 2.0 absolut voll umfäng. Intressanterweise sitzt Michael Kay auch dem W3C-Gremium vor, welches für diese Standardisierung zuständig ist und daher muss man unterstellen, dass Michael Kay, wenn er einen entsprechenden Transformator programmiert, sehr genau weiß, was er tut. Jetzt ham wa ein bisschen ins Geschichtsbuch hineingeschaut, jetzt wollen ma mal auch ein paar Unterschiede jetzt erst einmal so ein wenig aus der Vogelperspektive anschauen. Fangen wir zuerst einmal mit einer unangenehmen Sache an und zwar: XSLT 2.0 ist nicht 100%ig abwärtskompatibel, Sie sehen es dort: Aber fast! Es gibt ein, zwei Kleinigkeiten, auf die man achten muss, die nicht immer 100% funktionieren, auf die werd ich Sie natürlich noch aufmerksam machen, aber bitte behalten Sie das im Hinterkopf, dass Sie, wenn Sie alte XSLT-Dokumente haben, Sie nicht einfach 1.0 durch 2.0 austauschen können und jetzt denken: Ach, es funktioniert alles. Bitte testen Sie diese XSLTs immer, ob es da nicht doch irgendwo Inkompatibilitäten gibt. Wenn wir jetzt von der Version 2.0 reden, dann bedeutet das natürlich auch, dass wir Funktionen hinzubekommen haben. Und zum einen muss man sagen: Wir haben neue XSLT-Befehle bekommen und einen, der wirklich sehr, sehr spannend ist, ist der Befehl „xsl:function“. Mit Hilfe von „xsl:function“ kann man, wenn man so will, eigene X-Path-Funktionen erstellen. Also man erstellt in seinem XSLT-Code etwas, was man an einer anderen Stelle benutzen kann, als wäre es eine X-Path-Funktion. Und das ist wirklich sehr, sehr praktisch. Dann, wenn man mit XML-Dokumenten arbeitet, hat man häufig Informationen, die man in einer Art Gruppe zusammenfassen kann. Und genau, wenn man derartige Bereiche hat, dann kann man die hier bearbeiten mit einem neuen XSLT-Befehl, der „xsl:for-each-group“ heißt. Dann noch viele weitere Dinge, die jetzt hier in diesem Überblick nich erläutert werden sollen. Eine für mich im Alltag meistens wichtigste Sache ist, dass nicht nur XSLT in der Version 2.0 vorliegt, sondern auch X-Path in der Version 2.0 vorliegt. In X-Path 1.0 hatten wir 31 Funktionen, die wir benutzen konnten, sowas wie „substring“, „concat“, „translate“ und so weiter, und so fort. Und jetzt hier in X-Path 2.0 sind es 119. Also die Zahl der X-Path-Funktionen ist geradezu explodiert, da ham wir jetzt viel, viel mehr Möglichkeiten. Was sind das für Möglichkeiten? Wir haben direkte Funktionen zur Datums- und Uhrzeitmanipulation, wir haben sehr, sehr leistungsfähige Möglichkeiten mit der Stringmanipulation. Wir haben auch die Möglichkeit, mit regulären Ausdrücken zu arbeiten, was die Sache enorm leistungsfähig macht. Und auch hier ist diese Liste natürlich noch viel, viel länger. Ne weitere Sache ist, die XSLT 2.0 von 1.0 unterscheidet: In XSLT 1.0 hat man selber, wenn man so will, kein Einfluss darauf, wie Werte, wie Informationen, die beispielsweise in einer Variable drin stehen, verarbeitet werden. Wenn man jetzt hier innerhalb von XSLT etwas in eine Variable hineinschreibt, ist das dann ein String? Ist das eine Zahl? Ja was isses denn? Und da hat sich XSLT 1.0 ausschließlich selber drum gekümmert und in XSLT 2.0 können wir die simplen Datentypen benutzen, die man eben auch aus Schema kennt, die dort dann beispielsweise „string“, „date“, „number“, und so weiter, und so fort, heißen. Das soll einmal ein erster, kleiner Überblick sein, über die Neuigkeiten hier in XSLT 2.0. Die Dinge, die ich hier aufgeführt habe, werden wir uns natürlich auch alle an einem praxisnahen Beispiel einmal im Detail anschauen.

Inhalt