XSLT Push oder Pull

http://blog.choas.net/2006/02/04/xslt_push_oder_pull

Copyright (C) 2003-2006 LarsGregori (Lizenz: Creative Commons)

04.02.2006 - XSLT

Irgend wann steht man mal vor einer Türe auf der Push bzw. Pull steht und man stellt sich die Frage, soll ich jetzt drücken oder ziehen?

Push ist drücken und Pull ist ziehen. Lässt sich eigentlich ganz einfach merken: Push the button (nicht nur The Chemical Brothers  (Semantik) nutzen dies als Album-Titel, sondern bereits viel früher Money Mark  (Semantik) (1998), der inoffizielle vierte Mann der Beastie Boys  (Semantik) ), den Knopf drückt man.

Während man Knöpfe drückt, läßt sich ein XSLT-Stylesheet so aufbauen, dass dieses die Daten zieht (pull) oder in das Ergebnis drückt (push). Fast, als würde man vor einer Türe stehen, stellt sich bei der Stylesheetentwicklung am Anfang die Frage, wie man mit den XML-Daten umgehen möchte: push oder pull?

Das developerWorks  (Semantik) von IBM hat hierzu einen Artikel: XML for Data: XSL style sheets: push or pull?  (Semantik)

Beim Pullen (Ziehen) zieht sich das Ausgangsdokument die notwendigen XML-Daten. (Name: xsl:value-of select="/kunde/name")

Beim Pushen (Drücken) drücken sich die XML-Daten in das Ausgangsdokument. Dadurch hängt die Struktur des Ausgangsdokuments von den XML-Daten ab. Wenn zum Beispiel keine Kundendaten vorhanden sind, dann wird auch kein Adressfeld ausgegeben.

Beide Methoden lassen sich auch mischen. Sollten Kundendaten vorhanden sein, dann matched das Template und innerhalb von diesem Template werden die Daten (Name, Strasse, Ort und Land) gezogen (pull).

Kevin Williams, der Autor des obigen Artikels, zieht den Pull-Mechanismus vor, während Copia in seinem Artikel Push vs pull XSLT  (Semantik) Preferenzen für Push hat.

Im Artikel developerWorksPushOrPull wird im übrigen beim Pullen ein xsl:for benutzt. Das xsl:for wie BASIC-Programmieren  (Semantik) ist, hatte ich schon einmal vor fast zwei Jahren (siehe Shortcuts im Semantik-Link). Ich denke hierfür wäre ein Mischung mit einem Push kein Problem. Jedoch wollte der Autor vielleicht eine klare Differenzierung.

Für SBlog23  (Semantik) benutze ich eine Mischung. Für die Startseite bestehen die XML-Daten aus mehreren Artikeln. Jeder Artikel wird (sortiert) in die HTML-Seite gedrückt (push). Der Kopf eines Artikel besteht aus festen Bestandteilen, wie Titel, Permantlink, Datum, usw, so dass hier der Pull-Mechanismus angewendet wird. Jedoch besteht der Artikeltext aus Text und semantische Wörter. Hierfür ist dann Push-Mechanismus sinnvoll.