XSLT Dateien aufteilen

Es ist möglich, XSLT-Templates in verschiedene Dateien aufzuteilen und dann in der Hauptdatei einzubinden.

Ein gutes Beispiel ist die Definition der CSS-Regeln, welche in mehreren Transformationen genutzt, aber nur an einer Stelle definiert werden soll. Entsprechend könnte eine Datei CSS.xslt definiert werden: 

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl
="http://www.w3.org/1999/XSL/Transform">

    <xsl:template name="addCss">
        <style>
            <![CDATA[
            body {
              margin:0px;
              padding:0px;
              font-family: Arial, sans-serif;
              font-size:10pt;
            }

            /* ... weitere Regeln ... */
        ]]>
        </style>
    </xsl:template>
    
</xsl:stylesheet>

Diese kann dann in der Haupt-Transformationsdatei über den Tag xsl:include eingebunden werden, welcher am Anfang des xsl:stylesheet angegeben werden muss:  

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
  <xsl:output omit-xml-declaration="yes" method="html" indent="yes"/>

  <xsl:include href="TestCSS.xslt"/>
    
  <!--Einstiegspunkt für die Abarbeitung: Rootelement-->
  <xsl:template match="/">
    <xsl:call-template name="MainTemplate" />
  </xsl:template>

  <!--Haupttemplate in dem das Ausgabedokument zusammengebaut wird-->
  <xsl:template name="MainTemplate">
    <html>
    <!--CSS in eigenes Template ausgelagert wegen Übersichtlichkeit-->
       <xsl:call-template name="addCss" />
       <body>
         ...
       </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Das importierte Template kann dann an der entsprechende Stelle analog wie ein in der Datei definiertes Template aufgerufen werden.

Hinweis: Wenn statt xsl:include xsl:import verwendet wird, können die in der Importdatei definierten Templates in der importierenden Datei überschrieben werden (geht bei xsl:include nicht).
 
Hinweis zur Einbindung des CSS: Die Bibliothek HiQPDf erfordert für ein fehlerfreies Ergebnis-Dokument, dass die CSS-Regeln inline im Dokument definiert sind. Eine Aufteilung in eine extra XSLT-Datei ist also eine gute Variante (da das CSS schon bei der Transformation ins Dokument übernommen wird). Eine Referenz im HTML über 'link rel="stylesheet"' sollte vermieden werden.