Gern stehe ich zur fachlichen Unterstützung in XML-Technologien, C#.NET, VisualBasic.NET und Java zur Verfügung. Sprechen Sie mich einfach an: Mail oder ☎ 0151 . 750 360 61


XSL-Übersicht / xsl:for-each vs. xsl:apply-templates

xsl:for-each vs. xsl:apply-templates

xsl:for-each vs. xsl:apply-templates

➪ Grundsätzlich gibt es verschiedene Wege, in XSL Nodelists abzuarbeiten. Mit Blick auf eine effiziente Wartbarkeit des Programmcodes empfiehlt sich, die Entscheidung auch von der Struktur des XML-Dokuments abhängig zu machen. xsl:for-each, xsl:call-template und xsl:apply-templates bieten jeweils Vor- und Nachteile für unterschiedliche Aufgabenstellungen, mit unterschiedlichen Konsequenzen für den Maintenance-Aufwand.

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.

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, dass die Auswahl der Code-Aufrufe nicht im Quelltext festgelegt ist, sondern erst zur Laufzeit erfolgt (Beispiel: <xsl:call-template name="{$vaufgerufenestemplate}">). Diese Art late binding erfordert zeitaufwendige Recherchen über die interne Funktionsweise.

Die unkritische Verwendung von xsl:apply-templates zieht häufig eine schrittweise Auslagerung der Logik in diverse Templates nach sich, die sich gegenseitig aufrufen. Oft befinden sich die Teillogiken in anderen Dateien, die in die aktuelle Logik werden müssen. Das Ergebnis ist häufig ein Spaghetti-Code, der mit fortschreitender Komplexität immer schwerer wartbar wird.

Mit zunehmenden gegenseitigen Abhängigkeiten der Subroutinen geht der Überblick verloren. Dadurch erhöht sich der Zeit- und Kostenaufwand an Wartung, Tests und Einarbeitung neuer Mitarbeiter. Der Aufwand steigt:

wg / 15. November 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


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

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

www.wilfried-grupe.de/XSL_Auslagerung_Template.html