Konzepte Spezialisierte Fallunterscheidung Kommt ein Ausgabeformat zu einem späteren Zeitpunkt hinzu, so kann man die Vererbung nutzen um clever zwischen den Ausgabeformaten zu unterscheiden. Ein bestehendes Template "cover" :
<xsl:template match="cover"> <fo:page-sequence master-reference="coverFront" force-page-count="auto"> <fo:flow flow-name="xsl-region-body"> [...] <fo:page-sequence master-reference="coverBack" force-page-count="auto"> <fo:flow flow-name="xsl-region-body"> [...]Plain Text
kann aufgesplittet werden in ein Template für eine Vor- und Rückseite:
<xsl:template match="cover"> <fo:page-sequence master-reference="coverFront" force-page-count="auto"> <fo:flow flow-name="xsl-region-body"> [...] </xsl:template> <xsl:template name="cover-back-switch"> <xsl:call-template name="cover-back"/> </xsl:template> <xsl:template name="cover-back"> <fo:page-sequence master-reference="coverBack" force-page-count="auto"> <fo:flow flow-name="xsl-region-body"> [...]Plain Text
Das Template "cover-back-switch" kann dann in einem Ausgabeformat überschrieben werden, um bspw. die Cover-Rückseite abhängig von einer Bedingung zu schalten.
Design Pattern Einen Algorithmus in einer Superklasse grob zu strukturieren und Details in Unterklassen zu verfeinern, ist ein gängiges Design Pattern in der Objektorientierten Programmierung. Diese Methodik kann auch sehr schön mittels Named-Templates in XSLT realisiert werden. Nicht umsonst heisst das OO Pattern dazu Template Method