Visit Linkwerk.com

XQuery 3.0, XPath 3.0, XSLT 3.0

Seit einigen Wochen gibt es beim W3C neue Entwürfe verschiedener X-Techniken. Neben XQuery 3.0 auch XPath 3.0. Ein Entwurf für XSLT 3.0 ist allerdings nicht (mehr) erreichbar. Falls es sich nicht um einen Fehler handelt, ist das eine für das W3C sehr ungewöhnliche Vorgehensweise. Schließlich hat Tim Berners-Lee himself die Parole ausgegeben Cool URIs don’t change.

Folgende Standardentwürfe sind derzeit verfügbar:

Ich habe mich noch nicht vertieft mit den Neuerungen auseinandergesetzt. Datenmodell und Serialisierung interessieren mich momentan nicht so sehr. Bei den anderen Specs sind ein paar interessante Dinge dabei:

Neue XPath- und XQuery-Funktionen

Es sollen in Zukunft die Funktionen head und tail zur verfügung stehen. Sie liefern den ersten Knoten bzw. den Rest einer Sequenz. Das mag für Programmierer, die in nicht funktionalen Sprachen arbeiten, nicht spannend klingen. In Sprachen wie Lisp oder Scheme sind die entsprechenden Funktionen car und cdr die zentralenen Operatoren auf der einzigen Datenstruktur, der Liste. Da ich mein Informatikstudium mit Scheme begonnen habe, fühle ich mich einmal mehr in X* zuhause. Fairerweise muss ich aber auch zugeben, dass man die entsprechene Funktionalität längst in XSLT/XQuery/XPath selbst bauen konnte. Die Spezifikation bezeichnet head und tail folglich auch als “convenience functions”.

Zwei weitere neue Funktionen erlauben den Zugriff auf Umgebungsvariablen: environment-variable() und available-environment-variables(). Richtig spannend wird es aber mit Funktionen höherer Ordnung: map() wendet eine als Parameter gegebene Funktion sukzessive auf alle Elemente einer Liste von Werten an; filter() liefert aus einer Liste von Werten die zurück, für die eine gegebene Funktion wahr liefert. fold-left() wendet eine Funktion der Art f(x,y) auf eine Liste von Werten x1, … xn in der Reihenfolge 1..n an, wobei y der akkumumierte Wert ist. fold-right() macht das gleiche in der Reihenfolge n..1. Wendet eine Funktion f(x,y) auf Paare von Werten an, die aus zwei Listen der Art x1, …, xn und y1, …, yn bestehen. Dass der Abschnitt “Basic higher-order functions” heißt, klingt vielversprechend. Vielleicht kommen da nochmal mächtigere Möglichkeiten.

Eine Übersicht über alle Neuerungen gibt es im Anhang F.2.

Neuigkeiten in XQuery

Die Neuerungen von XQuery sind gleich zu Beginn des Entwurfs in der Zusammenfassung zu finden. Bei den FLWOR-Ausdrücken gefällt mir das “window” gut. Damit kann ich eine Menge von Suchergebnissen in “Abschnitten” bekommen, um z.B. ein Blättern durch die Suchergebnisse zu erlauben.

Des Weiteren passiert einiges im Bereich der Funktionen. Details unter Inline functions (namenlose Funktionen), Private functions (eingeschränkte Sichtbarkeit) und Nondeterministic functions (Funktionen, die verschiedenen Aufrufen mit identischen Parametern nicht immer das selbe Ergebnis liefern; also keine Seiteneffektfreiheit).

Und sonst? Und XSLT?

Wer sich für die Details der anderen Änderungen interessiert, findet zu jedem Entwuf eine Fassung mit farblich hervorgehobenen Änderungen; Beispiel: XPath 3.0

Ein Entwurf zu XSLT 3.0 ist derzeit nicht erreichbar. Die anderen Texte referenzieren ihn zwar, bei Klick auf die entsprechende Adresse bekomme ich heute aber nur einen 404. Es ist nicht üblich, dass das W3C Texte nach ihrem Erscheinen wieder aus dem Web nimmt. Vielleicht geschah die Veröffentlichung zu früh und wurde zurückgenommen. In den anderen Texten steht hinter XSLT 3.0 nun der Vermerk “expected”.

Na dann, erwarten wir mal…


Comments are closed.