XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



XSL / Die XSLT - Struktur / xsl:for-each select / 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, XML-Dokumente mithilfe von XSL abzuarbeiten. Mit Blick auf eine effiziente Wartbarkeit des Programmcodes empfiehlt sich, die Entscheidung wesentlich von der Struktur des XML-Input 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.

Siehe

In der Praxis werden sämtliche Ansätze parallel verwendet. Auch bei stark strukturierten, datensatz#ähnlichen Dokumentstrukturen, bei denen xsl:for-each eindeutig die bessere Wahl wäre, kommen tief verschachtelte xsl:apply-templates zum Einsatz, die die Wartung keineswegs erleichtern. 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 / 24. September 2020



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