Homepage-Webhilfe Event-Banner

Stylesheet-Einbindung

Für große XSLT-Skripte oder -Projekte kann es sinnvoll sein, Templates in weitere Dateien auszulagern. Dadurch werden die einzelnen Skripte nicht nur kleiner und übersichtlicher, sondern auch wiederverwendbar, d. h. Sie können ein XSLT-Skript von mehreren anderen XSLT-Skripten einbinden. In XSLT gibt es zwei Mechanismen für solche Vorhaben: den Import und die Inkludierung.


Um eine Datei zu importieren, müssen Sie das XSLT-Element import angeben. Dieses muss sich dabei direkt im stylesheet-Element befinden. Das leere Element import verfügt über das Attribut href, mit welchem Sie den Pfad zur importierenden Datei angeben. In der importierten Datei müssen Sie nichts Weiteres angeben. Sie notieren dort ebenfalls ganz normal Templates. Um von der „Hauptdatei“, die in der importierten Datei notierten Templates anzuwenden, verwenden Sie auch ganz normal das apply-templates-Element. Wenn Sie in der „Hauptdatei“ und in der importierten Datei ein Template notiert haben, welches über die gleiche Bedingung verfügt, so haben Sie einen Template-Konflikt. Dies ist jedoch nicht weiter schlimm. Das Template der Hauptdatei hat prinzipiell immer Vorrecht. Möchten Sie explizit das Template von der importierten Datei aufrufen oder möchten Sie aus dem Template in der Hauptdatei noch zusätzlich das Template der importierten Datei anwenden, so können Sie das XSLT-Element apply-imports notieren. Das Element ist einteilig und verfügt über keine Attribute.

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="import.xsl" type="text/xsl" ?>

<artikel>
    <titel>Grundlagen von XSLT</titel>
    <text>Hier lernen Sie die Grundlagen von XSLT ...</text>
</artikel>

XSLT-Code (import.xsl):

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="import-erw.xsl" />
    
    <xsl:template match="/">
        <html>
            <head>
                <title>Stylesheet importieren - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <xsl:apply-imports />
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

XSLT-Code (import-erw.xsl):

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="artikel">
        <article>
            <xsl:apply-templates />
        </article>
    </xsl:template>
    
    <xsl:template match="titel">
        <h1><xsl:value-of select="." /></h1>
    </xsl:template>
    
    <xsl:template match="text">
        <p><xsl:value-of select="." /></p>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:

Übrigens: Das hier verwendete Verfahren kommt Ihnen vielleicht von der Objektorientierung bekannt vor, wo Methoden überschrieben werden können.


Bei der Inkludierung werden die „Hauptdatei“ und die inkludierte Datei verschmolzen bzw. vereint. Um ein Stylesheet in das Dokument zu inkludieren, verwenden Sie das einteilige Element include. Dieses muss ebenfalls direkt im Wurzelelement des XSLT-Dokuments notiert werden. Über das href-Attribut wird der Pfad zur inkludierten Datei festgelegt. Um die Templates aus der inkludierten Datei anzuwenden, verwenden Sie weiterhin wie bekannt das apply-templates-Element.

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="include.xsl" type="text/xsl" ?>

<artikel>
    <titel>Grundlagen von XSLT</titel>
    <text>Hier lernen Sie die Grundlagen von XSLT ...</text>
</artikel>

XSLT-Code (include.xsl):

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:include href="include-erw.xsl" />
    
    <xsl:template match="/">
        <html>
            <head>
                <title>Stylesheet inkludieren - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

XSLT-Code (include-erw.xsl):

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="artikel">
        <article>
            <xsl:apply-templates />
        </article>
    </xsl:template>
    
    <xsl:template match="titel">
        <h1><xsl:value-of select="." /></h1>
    </xsl:template>
    
    <xsl:template match="text">
        <p><xsl:value-of select="." /></p>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:

Wichtig: Wenn bei der Inkludierung ein Konflikt entsteht (also zwei Templates, welche die gleiche Bedingung haben), so kann keine Transformation erfolgen. Beim Import hingegen gibt es keinen Fehler (siehe Beschreibung oben).

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK