Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


xsl:for-each oder xsl:apply-templates ?

xsl:for-each oder xsl:apply-templates ?

Grundsätzlich gibt es also verschiedene Wege, in XSL Nodelists abzuarbeiten. Oberflächlich betrachtet, liegt die Entscheidung bei dem individuellen Programmierstil des Entwicklers. Mit Blick auf eine effiziente Wartbarkeit des Quelltextes empfiehlt sich jedoch, die Entscheidung von der Struktur des XML Dokuments abhängig zu machen.

In der Praxis werden sämtliche Ansätze parallel verwendet. Auch bei datensatzbasierten Strukturen, bei denen xsl:for-each eindeutig die bessere Wahl wäre, kommen tief verschachtelte xsl:apply-templates zum Einsatz. Und bei mixed Content arbeitet sich mancher Developer mit xsl:for-each ab.

Der Ansatz "xsl:apply-templates" bringt jedoch eine schrittweise Auslagerung der Logik in diverse Templates mit sich, die sich dann häufig gegenseitig aufrufen. Die Notwendigkeit zu hoher Flexibilität mündet oft in einem Spaghetti-Code, der sich mit dem Hinweis auf die "Wiederverwendung von Quellcode" zwar rechtfertigen läßt, aber nicht darüber hinwegtäuschen kann, daß die Programmierung mit fortschreitender Komplexität immer schwerer wartbar wird.

Gewissermaßen wird also die hohe Flexibilität, die zur Verarbeitung gemischter Datenstrukturen erforderlich ist, mit einem Verlust an Übersichtlichkeit erkauft, der über gestiegene gegenseitige Abhängigkeiten dieser Subroutinen einen erhöhten Zeitaufwand an Wartung, Tests und Einarbeitung neuer Mitarbeiter nach sich zieht.

Die drei Ansätze treiben im unkontrollierten Mix mitunter erstaunliche Blüten. Die Anzahl der Templates / Functions, die sich gegenseitig aufrufen, gehen in die Tausende. In XSL 1.0 kommt es obendrein vor, daß die Auswahl der Code-Aufrufe nicht im Quelltext festgelegt, sondern erst zur Laufzeit erfolgt (Beispiel: <xsl:call-template name="{$vaufgerufenestemplate}">). Diese Art "late binding" erfordert zeitaufwändige Recherchen über die interne Funktionsweise.

Der Aufwand an die Wartung steigt:

Der hohe Grad an gegenseitigen Abhängigkeiten zieht häufig eine beträchtliche Kostenlawine nach sich, so daß man bestrebt sein sollte, diese Abhängigkeiten nachhaltig zu entflechten und auf ein Mindestmaß - im Idealfall auf Null - zu reduzieren. Wenn das nicht gelingt, dann ist es erfahrungsgemäß eine Frage der Zeit, bis die Controllingabteilung sich für zuständig hält und die Regie übernimmt.

qrpic/XSL_Auslagerung_Template.jpg

wg / 31. August 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info10@wilfried-grupe.de