XSL-Übersicht / xsl:call-template
➪ xsl:call-template ruft benannte Templates ("xsl:template name=") auf. Damit eignet sich xsl:call-template gut zur Implementierung von "Unterprogrammen", die duch die eigentlichen "Hauptprogramme" beliebig oft aufgerufen ("xsl:call-template") werden können.
Zur Einordnung von xsl:call-template ist es sinnvoll, sich vorher an die Einsatzbereiche von "xsl:for-each select" und "xsl:template match" zu erinnern.
Während "xsl:template match" und "xsl:for-each select" zur präzisen XPath-Adressierung eine enge Bindung an die Datenstruktur des XML-Inputs erfordern, eignen sich frei benannte Templates ("xsl:template name") gut zur Implementierung von "Unterprogrammen", die durch die eigentlichen "Hauptprogramme" beliebig oft aufgerufen ("xsl:call-template") werden können. Dies kann weitgehend unabhängig von der Datenstruktur des XML Inputs geschehen.
Wenn es beispielsweise darum geht, parametergesteuert
dann ist das ein Fall für "xsl:call-template".
Benannte Templates ("xsl:template name") erlauben daher,
Zwar ist es möglich, auf jegliche Parameterdefinition zu verzichten und ein benanntes Template mit dem initialen Scope von Elementen / Attributen zu konfrontieren, die dem Template zur Laufzeit übergeben werden (vgl: xsl:variable).
Mit der (vermeidbaren) Gefahr, innerhalb des benannten Templates doch wieder auf die enge Bindung an die Datenstruktur des XML-Inputs zurückzugreifen, um die diversen Elemente/Attribute via XPath gezielt adressieren zu können. In diesem Fall übernimmt "xsl:template name" die Aufgabe von "xsl:template match".
Wird innerhalb eines "xsl:template name" zudem wiederholt "xsl:call-template" bzw. "<xsl:apply-templates/>" aufgerufen, ist der Vorteil schnell dahin, gegenseitige Abhängigkeiten weitgehend vermeiden und die Wartbarkeit des Gesamtsystems erhöhen zu können.
Mehr zum Thema: for-each, apply, call
wg / 29. Dezember 2017
Fragen? Anmerkungen? Tips?
Bitte nehmen Sie Kontakt zu mir auf:
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de